ola,
bom estou com a seguinte duvida...
fiz meu mapeamento ManyToMany no hibernate...// imports
@Entity
public class UnidadeNegocio implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(nullable=false)
private String nome;
private String decricao;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="Unid_Indice",
joinColumns= @JoinColumn(name="id_UnidadeNegocio", referencedColumnName="id"),
inverseJoinColumns= @JoinColumn(name="id_Indice", referencedColumnName="id"))
private List<Indice> indices;
public UnidadeNegocio() {
this.indices = new ArrayList<Indice>();
}
// getter and setter... equals e hashcoce....
// imports
@Entity
@Table(name="Indices")
public class Indice implements java.io.Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(nullable=false)
private String nome;
private String descricao;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="Unid_Indice",
joinColumns= @JoinColumn(name="id_Indice", referencedColumnName="id"),
inverseJoinColumns= @JoinColumn(name="id_UnidadeNegocio", referencedColumnName="id"))
private List<UnidadeNegocio> unidadesNegocio;
//@OneToMany(mappedBy="indice")
//private List<Lancamento> lanctos;
public Indice() {
this.unidadesNegocio = new ArrayList<UnidadeNegocio>();
//this.lanctos = new ArrayList<Lancamento>();
}
// getter and setter... equals and hashcode
public class TesteInsert {
public static void main(String args[]){
Session session = HibernateUtil.getSession();
session.beginTransaction();
UnidadeNegocio unid = new UnidadeNegocio();
unid.setNome("Indaiatuba");
unid.setDecricao("Filial de Indaiatuba");
session.save(unid);
Indice ind = new Indice();
ind.setNome("Tx Frequencia");
ind.setDescricao("Calcula Taxa");
session.save(ind);
/* minha duvida/problema esta aqui...
* em todo lugar diz q eu tenho q fazer assim... setando um no outro...
* porem isso aqui faz 2 inserts na minha tabela de relacionamento =(
* o certo seria 1 insert apenas...
* oq sera q estou fazendo de errado... */
unid.getIndices().add(ind);
ind.getUnidadesNegocio().add(unid);
/* se eu fizer assim funciona
* unid.getIndices().add(ind); */
/* ou assim
* ind.getUnidadesNegocio().add(unid); */
// ate pensei q era culpa do cascade.ALL mais sem ele ocorre o mesmo problema =(
//UnidadeNegocio unid2 = (UnidadeNegocio) session.get(UnidadeNegocio.class, 1l);
///Indice ind2 = (Indice) session.get(Indice.class, 1l);
//unid2.getIndices().add(ind2);
//ind2.getUnidadesNegocio().add(unid2);
session.getTransaction().commit();
}
}
alguma alma generosa poderia me ajudar =)
