Czy jeżeli mam relacje JPA OneToOne (jednokierunkową lub dwu) to JPA Provider zabezpiecza jakoś aby dla dwóch obiektów encji klasy 1 (owning) nie przypisać tego samego obiektu encji klasy 2? Czy jest to jakoś sprawdzane czy tez za spójność odpowiada tylko baza wyrzucając wyjątek ?
Jakieś info?
Jesli owned ma klucz obcy do ownera, to niejawnie nie jest to mozliwe.
Jesli jest to wiele do wielu, lub 1 do wielu, ale z tabela laczaca, to jest to mozliwe, i wtedy musisz miec unique na odpowiendich kolumnach, i rzucany jest constraint violation przez baze.
Skad hibernate ma wiedziec, ze jesli ty przypisujesz owning do ownera, to nie chcesz go po prostu zmienic? To jest normalny use case, i hb nie moze wiedziec o co ci chodzi.
Czyli dostanę Exception Javy wrapujące error łamania constrainta w bazie za każdym razem?
Jeżeli założysz unique constraint na bazie, to błąd będzie się pojawiał przy insert lub update.
Warto nadmienic, ze bedzie to blad podczas flush (ktory moze byc jednym z tych tutaj: http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/FlushMode.html). Twoja brocha zadbac o to, aby aplikacja przypisywala dane poprawnie, hibernate tego nie daje z automatu bo i jak?
Dzięki