Como mapear um relacionamento de 3 tabelas JPA

0 respostas
V

Bom dia galera, sou novo aqui no forum e estou com uma dúvida no JPA.

Possuo 3 Entidades (LOJA, PRODUTO e TAXA) com suas respectivas tabelas. Existe uma quarta tabela onde eu faço a “ligação” entre elas. Se eu tento mapear 2 Entidades somente, funciona perfeitamente como no exemplo a seguir:

@Entity

@Table(name=“tb_cdc_loja”)

public class Loja {
@Id
@Column(name="cdc_loj_codigo")
private int codigoLoja;

@ManyToMany(mappedBy="lojas",fetch=FetchType.LAZY,cascade=CascadeType.ALL)
private List<Produto> produtos;

}

@Entity

@Table(name=“tb_cdc_produto”)

public class Produto {
@Id

@Column(name=“cdc_prd_codigo”)

private int codigoProduto;
@ManyToMany

@JoinTable(name=“tb_cdc_loja_produto_taxa”,

joinColumns={ @JoinColumn(name=“cdc_prd_codigo”, referencedColumnName=“cdc_prd_codigo”) },

inverseJoinColumns={ @JoinColumn(name=“cdc_prd_codigo”, referencedColumnName=“cdc_prd_codigo”) } )

private List lojas;

}

agora como isto pode ser feito com 3 entidades? Fiz algo desse tipo mas nao deu certo:

@Entity

@Table(name=“tb_cdc_loja”)

public class Loja {
@Id
@Column(name="cdc_loj_codigo")
private int codigoLoja;

@ManyToMany(mappedBy="lojas",fetch=FetchType.LAZY,cascade=CascadeType.ALL)
private List<Produto> produtos;

}

@Entity

@Table(name=“tb_cdc_produto”)

public class Produto {
@Id

@Column(name=“cdc_prd_codigo”)

private int codigoProduto;

@ManyToMany(mappedBy="_produtos",fetch=FetchType.LAZY,cascade=CascadeType.ALL)
private List taxas;

@ManyToMany

@JoinTable(name=“tb_cdc_loja_produto_taxa”,

joinColumns={ @JoinColumn(name=“cdc_prd_codigo”, referencedColumnName=“cdc_prd_codigo”) },

inverseJoinColumns={ @JoinColumn(name=“cdc_prd_codigo”, referencedColumnName=“cdc_prd_codigo”) } )

private List lojas;

}

@Entity

@Table(name=“tb_cdc_taxa”)

public class Taxa {
@Id

@Column(name=“cdc_tx_codigo”)

private int codigoTaxa;
@ManyToMany

@JoinTable(name=“tb_cdc_loja_produto_taxa”,

joinColumns={ @JoinColumn(name=“cdc_lpt_tx_codigo”, referencedColumnName=“cdc_tx_codigo”) },

inverseJoinColumns={ @JoinColumn(name=“cdc_lpt_prd_codigo”, referencedColumnName=“cdc_prd_codigo”) } )

private List _produtos;

}

Se alguem puder me ajudar ficarei grato!!

Criado 13 de maio de 2008
Respostas 0
Participantes 1