Tenho três tabelas:
FaturamentoGrupo , SubFatura e FaturamentoGrupoSubFatura de junção,
Na SubFatura
@ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinTable(name="EMP_FATURAMENTOGRUPOSUBFATURA", joinColumns = @JoinColumn(name="CDSUBFATURASEQ"),inverseJoinColumns = @JoinColumn(name="CDFATURAMENTOGRUPOSEQ"))
private List<FaturamentoGrupoEntity> listaFaturas;
Na FaturamentoGrupo
@ManyToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name="EMP_FATURAMENTOGRUPOSUBFATURA", joinColumns = @JoinColumn(name="CDFATURAMENTOGRUPOSEQ"),inverseJoinColumns = @JoinColumn(name="CDSUBFATURASEQ"))
private List<SubFaturaEntity> listaSubfaturas;
Está gravando nas FaturamentoGrupo e SubFatura, mas não grava na de junção (FaturamentoGrupoSubFatura).
Alguém sabe me dizer o que estou fazendo de errado?
valeu
Acredito que seja um problema no mapeamento da sua join table
Seguindo a documentação do Hibernate: http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-mapping-association
@Entity
public class Employer implements Serializable {
@ManyToMany(
targetEntity=org.hibernate.test.metadata.manytomany.Employee.class,
cascade={CascadeType.PERSIST, CascadeType.MERGE}
)
@JoinTable(
name="EMPLOYER_EMPLOYEE",
joinColumns=@JoinColumn(name="EMPER_ID"),
inverseJoinColumns=@JoinColumn(name="EMPEE_ID")
)
public Collection getEmployees() {
return employees;
}
...
}
@Entity
public class Employee implements Serializable {
@ManyToMany(
cascade = {CascadeType.PERSIST, CascadeType.MERGE},
mappedBy = "employees",
targetEntity = Employer.class
)
public Collection getEmployers() {
return employers;
}
}
Repare na configuração da classe Employee do exemplo acima…ela faz referencia para a propriedade ‘employees’ da classe Employer (e na classe employer vc ja tem configurado quais campos da sua join table deverão ser usados).