Pessoal, estou tendo um problema estranho com oracle 10g xe e hibernate annotations.
Vou explicar como um exemplo:
Tenho 3 classes:
class A{
@OneToOne
@JoinColumn(name="b1_id")
private B b3;
@OneToOne
@JoinColumn(name="b2_id")
private B b2;
@OneToOne
@JoinColumn(name="b3_id")
private B b3;
//getters e setters
}
class B{
@OneToOne
@JoinColumn(name="c1_id")
private C c1;
//getters e setters
}
class C{
//mapeamentos de atributos do tipo, int, double, string, etc
}
Problema:
Quando eu realizo a operação:
//inicializados os objetos devidamente… NOVOS OBJETOS, AINDA NAO PERSISTIDOS!
B b1 = new B();
b1.setC1(carregaQualquerC(new Long(1)); //para exemplificar q o objeto c está salvo no banco, o método carregaQualquerC retorna um objeto persistido!
B b2 = new B();
b2.setC1(new C());
B b3 = new B();
b3.setC1(new C());
A a = new A();
a.setB1(b1);
a.setB2(b);
a.setB3(b3);
//Agora qnd vou persistir...
Dao.save(a);
A operação eh realizada, com sucesso do seguinte pontod e vista:
Os objetos do tipo B sao salvos na tabela B, e sao criados os seguintes ids do tipo Long:
b1.id = 4
b2.id = 5
b3.id = 6
Certo?
MASSSSSSSSS
na tabela da classe A, nas colunas de relacionamento, os ids estão assim:
a.b1_id = 1
a.b2_id = 2
a.b3_id = 3
Ou seja, não sei se ficou bem claro, os objetos sao salvos, mas a FK fica errada. Porque teoricamente, a.b1_id deveria ser = 4 e nao 1!
Parece que ele gera 2 ids diferentes para cada relacionamento.
Alguem sabe me dizer como resolver isso?