我在许多表之间有多对多关系,可以在这里看到它们的简化视图:
在我的代码中,我定义了它们之间的关系。它们都具有等号,并且哈希码被覆盖。这是Anexo类。
@Entity
@Table(name = "tb_anexo")
@NamedQuery(name = "TbAnexo.findAll", query = "SELECT t FROM Anexo t")
public class Anexo extends Selecionavel implements Serializable {
@ManyToMany
@JoinTable(
name="tb_anexo_entidades",
joinColumns=@JoinColumn(name="fk_anexo", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="fk_movimento", referencedColumnName="id"))
private List<Movimento> movimentos;
@ManyToMany
@JoinTable(
name="tb_anexo_entidades",
joinColumns=@JoinColumn(name="fk_anexo", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="fk_distribuicao_eletronica", referencedColumnName="id"))
private List<DistribuicaoEletronica> distribuicoesEletronicas;
Class DistribuicaoEletronica:
@Entity
@Table(name="tb_distribuicao_eletronica")
@NamedQuery(name="DistribuicaoEletronica.findAll", query="SELECT d FROM DistribuicaoEletronica d")
public class DistribuicaoEletronica implements Serializable {
@ManyToMany(mappedBy="distribuicoesEletronicas")
private List<Anexo> tbAnexos;
还有Movimento类:
@Entity
@Table(name = "tb_movimento")
@NamedQuery(name = "TbMovimento.findAll", query = "SELECT t FROM Movimento t")
public class Movimento implements Serializable {
@ManyToMany(mappedBy="movimentos")
private List<Anexo> tbAnexos;
我设法创建一个将anexo链接到每个实体的关系。 The same anexo relating to two entities
但是,当我运行运行anexoSB.edit(anexo)的代码时,编辑不起作用:不是删除关系anexo-movimento,而是删除了关系anexo-movimento和anexo-distribuicao eletronica。
private void removeAnexosWhenSaving() {
for(Anexo a: removedAnexos){
if(a.getId() != null && !anexos.contains(a)){
a.getMovimentos().remove(movimento);
a.movimento.getTbAnexos().remove(this);
}
}
for(Anexo anexo: removedAnexos){
if(anexo.getId() != null && !anexos.contains(anexo)){
if(!anexo.verifyDependences()){
anexoSB.remove(anexo);
}
else {
anexoSB.edit(anexo);
}
}
}
}
我应该怎么做才能使其正常工作?