Minha dúvida diz referência a isso:
Tenho dois objetos: A e B:
===============================
class A {
private B b;
private ArrayList blist;
public void setB(B b) {
this.b = b;
}
public void addB(B b) {
blist.add(b);
}
}
Muito bem, estou lendo esses objetos no banco de dados dessa forma:
===============================
A a = new A();
//Abro sessao Hibernate
b1 = servico.getB(1);
a.setB(b1);
//Fecho sessao Hibernate
//Faço um monte de coisa... bla bla bla...
//Abro sessao Hibernate
b1 = servico.getB(1);
a.addB(b1);
//Fecho sessao Hibernate
//Faço um monte de coisa... bla bla bla...
//Abro sessao Hibernate
servico.gravaA(a);
//Fecho sessao Hibernate
Muito bem, nessa linha ai acima “servico.gravaA(a);” está dando um erro
do Hibernate dessa forma:
===============================
Caused by: org.hibernate.NonUniqueObjectException: a different object
with the same identifier value was already associated with the session:
[B#1]
Enfim, o Hibernate está acusando , na hora de gravar o objeto “A” que
diferentes objetos do tipo “B” tem o mesmo identificador. No entanto, é
isso mesmo que eu quero, ou seja, o objeto A eventualmente pode ter o
objeto B (com o mesmo código) gravado no ArrayList e também gravado na
variável private “b”. Mas o Hibernate está dizendo “ei, êpa! tem dois
’B’ aqui com o mesmo código”.
Eu pensei que o próprio Hibernate verificasse, no caso acima, que B
tivesse o mesmo código e gravasse apenas uma única instância.
Então…, como fazer para gravar o objeto “A” no banco de dados tendo
ele o objeto B de código 1 gravado de duas formas no mesmo objeto?
Obrigado
Cristiano