Hibernate + Annotations

3 respostas
regisbten

Boa tarde, pessoal espero ajuda de vocês, procurei muito na internet e até agora nenhum exemplo deu certo, tenho um relacionamento n:n com uma tabela de relacionamento que possui dados. Alguém sabe como fazer? Ja tenho alguma coisa pronta ja testei muita coisa também mas até agora nada.

As tabelas são:

Pesquisa, Pergunta e Perguntaspesquisa.

Atualmente está assim:

Pesquisa:

@Entity
@Table(name = "pesquisa")
@NamedQueries( {
        @NamedQuery(name = "Pesquisa.findByIdpesquisa", query = "SELECT p FROM Pesquisa p WHERE p.idpesquisa = :idpesquisa"),
        @NamedQuery(name = "Pesquisa.findByDatapesquisa", query = "SELECT p FROM Pesquisa p WHERE p.datapesquisa = :datapesquisa"),
        @NamedQuery(name = "Pesquisa.findByNotaempresa", query = "SELECT p FROM Pesquisa p WHERE p.notaempresa = :notaempresa")
    })
@SequenceGenerator(name="pesquisa_idpesquisa_seq",sequenceName="pesquisa_idpesquisa_seq")
public class Pesquisa implements Serializable {

    @Id
    @Column(name = "idpesquisa", nullable = false)
    @GeneratedValue(strategy=GenerationType.AUTO, generator="pesquisa_idpesquisa_seq")
    private Integer idpesquisa;

    @Column(name = "datapesquisa")
    @Temporal(TemporalType.DATE)
    private Date datapesquisa;

    @Column(name = "notaempresa")
    private Double notaempresa;

    
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "pesquisa")
    private Collection<Perguntaspesquisa> perguntaspesquisaCollection;

    @JoinColumn(name = "idusuario", referencedColumnName = "idusuario")
    @ManyToOne
    private Usuario idusuario;

Pergunta:

@Entity
@Table(name = "pergunta")
@NamedQueries( {
        @NamedQuery(name = "Pergunta.findByIdpergunta", query = "SELECT p FROM Pergunta p WHERE p.idpergunta = :idpergunta"),
        @NamedQuery(name = "Pergunta.findByTextopergunta", query = "SELECT p FROM Pergunta p WHERE p.textopergunta = :textopergunta")
    })
@SequenceGenerator(name="pergunta_idpergunta_seq",sequenceName="pergunta_idpergunta_seq")
public class Pergunta implements Serializable {

    @Id
    @Column(name = "idpergunta", nullable = false)
    @GeneratedValue(strategy=GenerationType.AUTO, generator="pergunta_idpergunta_seq")
    private Integer idpergunta;

    @Column(name = "textopergunta")
    private String textopergunta;

    @JoinColumn(name = "idproduto", referencedColumnName = "idproduto")
    @ManyToOne
    private Produto idproduto;

    @JoinColumn(name = "idtipopergunta", referencedColumnName = "idtipopergunta")
    @ManyToOne
    private Tipopergunta idtipopergunta;

    @OneToMany(cascade = CascadeType.PERSIST, mappedBy = "pergunta")
    private Collection<Perguntaspesquisa> perguntaspesquisaCollection;

Perguntapesquisa:

@Entity
@Table(name = "perguntaspesquisa")
@NamedQueries( {
        //@NamedQuery(name = "Perguntaspesquisa.findByIdpergunta", query = "SELECT p FROM Perguntaspesquisa p WHERE p.perguntaspesquisaPK.idpergunta = :idpergunta"),
        //@NamedQuery(name = "Perguntaspesquisa.findByIdpesquisa", query = "SELECT p FROM Perguntaspesquisa p WHERE p.perguntaspesquisaPK.idpesquisa = :idpesquisa"),
        @NamedQuery(name = "Perguntaspesquisa.findByNivelresposta", query = "SELECT p FROM Perguntaspesquisa p WHERE p.nivelresposta = :nivelresposta"),
        @NamedQuery(name = "Perguntaspesquisa.findByTextoresposta", query = "SELECT p FROM Perguntaspesquisa p WHERE p.textoresposta = :textoresposta"),
        @NamedQuery(name = "Perguntaspesquisa.findByNumeroresposta", query = "SELECT p FROM Perguntaspesquisa p WHERE p.numeroresposta = :numeroresposta"),
        @NamedQuery(name = "Perguntaspesquisa.findByComentarioresposta", query = "SELECT p FROM Perguntaspesquisa p WHERE p.comentarioresposta = :comentarioresposta")
    })

@IdClass(PerguntaspesquisaPK.class)
public class Perguntaspesquisa implements Serializable {

    /**
     * Campo de chave primária embutido
     */
    //@EmbeddedId
    //protected PerguntaspesquisaPK perguntaspesquisaPK;

    @Id
    @Column(name = "idpesquisa", nullable = false)
    private int idpesquisa;
    
    @Id
    @Column(name = "idpergunta", nullable = false)
    private int idpergunta;
	
    @Column(name = "nivelresposta")
    private Integer nivelresposta;

    @Column(name = "textoresposta")
    private String textoresposta;

    @Column(name = "numeroresposta")
    private Double numeroresposta;

    @Column(name = "comentarioresposta")
    private String comentarioresposta;

    @JoinColumn(name = "idpergunta", referencedColumnName = "idpergunta", insertable = false, updatable = false)
    @ManyToOne
    private Pergunta pergunta;

    @JoinColumn(name = "idpesquisa", referencedColumnName = "idpesquisa", insertable = false, updatable = false)
    @ManyToOne
    private Pesquisa pesquisa;
Desde ja agradeço a todos. Abraço

3 Respostas

regisbten

Alguemm???

marciobarroso

Calma ae Brow …

https://java.sun.com/javaee/5/docs/api/javax/persistence/ManyToMany.html

[]'s

juniorsatanas

USER******************************

package org.vraptor.mydvds.model;

import java.util.Set;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.ManyToMany;

import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;

/**

  • Entidade user.

  • A classe representa a tabela user no banco de dados.

  • Um objeto persistido dessa classe representa um registro no banco de dados.
    */
    @Entity
    public class User {

    //chave primária
    @Id
    @GeneratedValue
    private Long id;

    //Anotações/regras do Hibernate validator
    
    @NotNull
    
    @Length(min = 3, max = 20)
    
    private String login;
    
    //Anotações/regras do Hibernate validator
    
    @NotNull
    
    @Length(min = 6, max = 20)
    
    private String password;
    
    //Anotações/regras do Hibernate validator
    
    @NotNull
    
    @Length(min = 3, max = 100)
    
    private String name;
    

    //mapeamento entre usuário e dvd,
    //lado responsável
    @ManyToMany
    private Set<Dvd> dvds;

    public Set<Dvd> getDvds() {
    
    return dvds;
    
    }
    
    public void setDvds(Set<Dvd> dvds) {
    
    this.dvds = dvds;
    
    }
    
    public Long getId() {
    
    return id;
    
    }
    
    public void setId(Long id) {
    
    this.id = id;
    
    }
    
    public String getLogin() {
    
    return login;
    
    }
    
    public void setLogin(String login) {
    
    this.login = login;
    
    }
    
    public String getName() {
    
    return name;
    
    }
    
    public void setName(String name) {
    
    this.name = name;
    
    }
    
    public String getPassword() {
    
    return password;
    
    }
    
    public void setPassword(String password) {
    
    this.password = password;
    
    }
    

}

DVD************************
package org.vraptor.mydvds.model;

import java.util.Set;

import javax.persistence.Entity;

import javax.persistence.EnumType;

import javax.persistence.Enumerated;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.ManyToMany;

/**

  • Entidade Dvd.

  • A classe representa a tabela dvd no banco de dados.

  • Um objeto persistido dessa classe representa um registro no banco de dados.
    */
    @Entity
    public class Dvd {

    /*

    • Chave primária.
      */
      @Id
      @GeneratedValue
      private Long id;

    private String title;

    private String description;

    //Mapeamento entre dvd e usuario
    
    @ManyToMany(mappedBy = dvds)
    
    private Set<User> users;
    

    @Enumerated(EnumType.STRING)
    private DvdType type;

    public String getDescription() {
    
    return description;
    
    }
    
    public void setDescription(String description) {
    
    this.description = description;
    
    }
    
    public Long getId() {
    
    return id;
    
    }
    
    public void setId(Long id) {
    
    this.id = id;
    
    }
    
    public String getTitle() {
    
    return title;
    
    }
    
    public void setTitle(String title) {
    
    this.title = title;
    
    }
    
    public DvdType getType() {
    
    return type;
    
    }
    
    public void setType(DvdType type) {
    
    this.type = type;
    
    }
    

    /**

    • @return the users
      */
      public Set<User> getUsers() {
      return users;
      }

    /**

    • @param users
    • the users to set
      
    */
    
    public void setUsers(Set<User> users) {
    
    this.users = users;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public boolean equals(Object obj) {
    
    return obj instanceof Dvd
    
    && getId().equals(((Dvd) obj).getId());
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public int hashCode() {
    
    if (this.id == null) {
    
    return 0;
    
    }
    
    return this.id.hashCode() * 31;
    
    }
    

}

hibernate.cfg.xml


&lt?xml version=‘1.0’ encoding=‘utf-8’?&gt
<!DOCTYPE hibernate-configuration PUBLIC
“-//Hibernate/Hibernate Configuration DTD 3.0//EN”
http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>

<hibernate-configuration>

&lt;session-factory&gt;

	&lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.HSQLDialect&lt;/property&gt;
	&lt;property name="hibernate.connection.url"&gt;jdbc:hsqldb:file:mydvdsDB&lt;/property&gt;
	&lt;property name="hibernate.connection.driver_class"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
	&lt;property name="hibernate.connection.username"&gt;sa&lt;/property&gt;
	&lt;property name="hibernate.connection.password"&gt;&lt;/property&gt;

	&lt;property name="hibernate.show_sql"&gt;false&lt;/property&gt;
	&lt;property name="hibernate.hbm2ddl.auto"&gt;update&lt;/property&gt;
	&lt;property name="hibernate.cache.provider_class"&gt;org.hibernate.cache.HashtableCacheProvider&lt;/property&gt;

	&lt;mapping class="org.vraptor.mydvds.model.Dvd" /&gt;
	&lt;mapping class="org.vraptor.mydvds.model.User" /&gt;
            

&lt;/session-factory&gt;

</hibernate-configuration>
*************************

obs:

<mapping class=“org.vraptor.mydvds.model.Dvd />

<mapping class=“org.vraptor.mydvds.model.User />
Criado 29 de junho de 2007
Ultima resposta 29 de jun. de 2007
Respostas 3
Participantes 3