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