Select com joing no Hibernate

1 resposta
G

Estou com uma dúvida de como fazer uma consulta utilizando o hibertante
minha sql seria a seguinte
"select reprodutor.nr_mossa, cobertura.dt_record
from matriz, cobertura, reprodutor
where matriz.cd_reprodutor = cobertura.nr_matriz
and matriz.cd_reprodutor = reprodutor.cd_reprodutor
and matriz.nr_ciclo = cobertura.nr_ciclo
and matriz.st_reproducao = 2
and cobertura.dt_record > '01/01/2010' "

minhas classes

Classe reprodutor
@Entity
@Table(name="reprodutor")
@SequenceGenerator(name = "SQREPRODUTOR", sequenceName = "SQREPRODUTOR", initialValue = 1)
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Reprodutor implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SQREPRODUTOR")
    @Column(name = "cd_reprodutor", length=5, nullable=false)
    private int cdReprodutor;

    @Column(name="nr_mossa", length=5, nullable=false)
    private String nrMossa;

    @ManyToOne
    @JoinColumn(name="cd_raca", nullable=false)
    private Raca raca;

    @Column(name="dt_nascimento", nullable=false)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dtNascimento;

    @Column(name="dt_entradagranja", nullable=false)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dtEntradaGranja;

    @Column(name="ps_entrada", length=4, precision=2, nullable=false)
    private Double psEntrada;

    @Column(name="vl_compra", length=4, precision=2, nullable=false)
    private Double vlCompra;

    @Column(name="ds_observacao", length=500, nullable=true)
    private String dsObservacao;

    @Column(name="tp_reprodutor", length=1, nullable=false)
    private String tpReprodutor;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="nr_compra", nullable = false)
    @ForeignKey(name="RCOMPRAREPRODUTOR_REPRODUTOR")
    private CompraReprodutor compraReprodutor;

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    @Column(name="dt_record")
    private Date dtRecord = new Date();
//setter e getters

Classe matriz

@Entity
@Table(name = "matriz")
@PrimaryKeyJoinColumn(name = "cd_reprodutor")
public class Matriz extends Reprodutor {

    @Column(name = "nr_ciclo", length = 2, nullable = false)
    private int nrCiclo;
    //1 - Vazia(leitoa), 2 - Gestacao, 3 - Lactacao, 4 - Vazia
    @Column(name = "st_reproducao", length = 1, nullable = false)
    private int stReproducao;
    @Column(name = "nr_cicloentrada", length = 2, nullable = false)
    private int nrCicloEntrada;
    //1- ativa, 2- descartada, 3- morta
    @Column(name = "st_matriz", length = 1, nullable = false)
    private int stMatriz;
    @OneToMany(mappedBy = "coberturaPK.matriz")
    private List<Cobertura> coberturas;
    @OneToMany(mappedBy = "matriz")
    private List<Parto> partos;
    @Column(name = "dt_record", nullable = false)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dtRecord = new Date();
//setters e getters
Classe Cobertura
@Entity
@Table(name="cobertura")
public class Cobertura implements Serializable{

    @EmbeddedId   
    private CoberturaPK coberturaPK;

    @OneToMany(mappedBy="montaPK.cobertura")
    private List<Montas> montas;

    @Temporal(javax.persistence.TemporalType.DATE)
    @Column(name="dt_record")
    private Date dtRecord = new Date();

    //valida e inválida (repeticao, aborto....)
    @Column(name="st_cobertura")
    private String stCobertura;
//setters e getters
Classe coberturaPK
@Embeddable
public class CoberturaPK implements Serializable {

    @ManyToOne
    @JoinColumn(name = "nr_matriz")//, referencedColumnName = "nr_mossa", insertable = false, updatable = false)
    private Matriz matriz;

    @Column(name="nr_ciclo")
    private int nrCiclo;
   
    public CoberturaPK() {
    }

1 Resposta

Hebert_Coelho

Cara, utilizando Hibernate vc faz HQL. A sintax é um pouco diferente.

Creio que os links abaixo possam te ajudar:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html
http://www.roseindia.net/hibernate/index.shtml
http://www.castleproject.org/activerecord/documentation/v1rc1/usersguide/hql.html
http://www.laliluna.de/articles/first-hibernate-example-tutorial.html

Criado 27 de julho de 2010
Ultima resposta 27 de jul. de 2010
Respostas 1
Participantes 2