Hej, mamy sobie zwykłe zagnieżdżenie w JPA:
@Entity
class Foo {
@Embedded
private Bar bar;
void someLogic() {
bar.someOtherLogic();
}
}
@Embeddable
class Bar {
private int column1;
private String column2;
private boolean column3;
void someOtherLogic() {
//
}
}
Z tego co wyczytałem, to jeśli wszystkie kolumny column1, column2, column3 będą w DB nullami to bar będzie nullem i dostaniemy NPE w metodzie someLogic()
.
No logiczne ..
Inicjujemy sobie zatem : private Bar bar = new Bar()
no i fajnie, działa - nie dostajemy nulla.
No właśnie, niby działa, ale natknąłem się na przypadek, że jednak leci NPE o_O. I co dziwne jedna z kolumn, akurat boolowskich zawiera wartość false. Dostajemy tam NPE mimo, że inicjalizuję to pole. Co jeszcze dziwniejsze - dla innej identycznej krotki w tabeli ten bar się inicjalizuje :D Jest tylko 1 taki rekord w DB dla którego tam ten bar się zaciąga jako null.
Może wpływ na to mają jakieś inne kolumny i to są jakieś strategie ORMa związane z pamięcią czy tam wydajnością, że tam ładuje nulla?
Ktoś ma jakieś tropy ? :D
Pod spodem siedzi psql.