Ordem dos relacionamentos JPA

0 respostas
eduardo_lopes

E aí pessoal, estou migrando um sistema legado para uma arquitetura mais atual JPA/Hibernate, por enquanto está muito legal, no entanto estou tendo problemas com um relacionamento, onde na montagem do SQL os joins estão errados, vou explicar com código:

Safra.java

@Entity
@Table(name="SAFRA")
@IdClass(SafraPK.class)
public class Safra implements Serializable {

	@Id
	private Origem origem = new Origem();

	@Id
	private Integer codigo;
	
	@Column(name="SEQSAF")
	private Integer sequencia;
...

SafraPK.java

@Embeddable
public class SafraPK implements Serializable {
	
	@Column(name="CODSAF")
	private Integer codigo;
	
	@ManyToOne
	@JoinColumns({
		@JoinColumn(name="CODEMP",columnDefinition="CODEMP"),
		@JoinColumn(name="CODORI",columnDefinition="CODORI")
	})
	private Origem origem = new Origem();
...

Origem.java

@Entity
@Table(name="ORIGEM")
@IdClass(OrigemPK.class)
public class Origem implements Serializable {

	@Id
	private Integer empresa;
	
	@Id
	private String codigo;
	
	@Column(name="DESORI")
	private String descricao;
...

OrigemPK.java

@Embeddable
public class OrigemPK implements Serializable {

	@Column(name="CODEMP")
	private Integer empresa;

	@Column(name="CODORI")
	private String codigo;
...

Não sei onde estou errando, só sei que na saída do SQL o relacionamento aparece errado:

select
        safra0_.CODSAF as CODSAF1_1_,
        safra0_.CODEMP as CODEMP1_1_,
        safra0_.CODORI as CODORI1_1_,
        safra0_.SEQSAF as SEQSAF1_1_,
        origem1_.CODORI as CODORI3_0_,
        origem1_.CODEMP as CODEMP3_0_,
        origem1_.DESORI as DESORI3_0_ 
    from
        SAFRA safra0_,
        ORIGEM origem1_ 
    where
        safra0_.CODEMP=origem1_.CODORI(+)   <<<< AQUI! SAFRA.CODEMP = ORIGEM.CODORI
        and safra0_.CODORI=origem1_.CODEMP(+)  <<<<< AQUI! SAFRA.CODORI = ORIGEM.CODEMP 
        and safra0_.CODSAF=? 
        and safra0_.CODEMP=? 
        and safra0_.CODORI=?

Notem que ele ligou SAFRA.CODEMP = ORIGEM.CODORI ! Como resolvo essa ordem?

Criado 7 de novembro de 2007
Respostas 0
Participantes 1