[Javalist] Hibernate insert/update probléma
Keresztes Jozsef
jkeresztes at vati.hu
2013. Jan. 29., K, 12:05:20 CET
Sziasztok !
Hibernate-tel kapcsolatban lenne egy problémám. A gond az hogy amikor INSERT-et várnék akkor UPDATE-et csinál.
A probléma nagyon egyszerű, legyen egy ORSZAG és egy TELEPULES tábla, rajtuk ülnek az Entity-k: Orszag, Telepules
és természetesen 1 országhoz N település tartozhat. A két Entity egymásra is tud hivatkozni (bidirectional),
az Orszag entity-ben elérhetők a hozzátartozó települések:
Set<Telepules> telepulesek;
Amikor az entity-ket létrehozom én szeretném az Id-ket megadni (nincs @GeneratedValue),
így tehát a konstruktor első paramétere az Id.
A két tábla tök üres az adatbázisban amikor a következő programrész lefut:
Orszag orszag = new Orszag(123L, "Magyarország");
orszag.telepulesek.add(new Telepules(100L, "Makó", orszag));
orszag.telepulesek.add(new Telepules(101L, "Pécs", orszag));
hibernateSession.save(orszag);
A baj az hogy amíg az Orszag sql-insert-tel szépen tárolódik, a települések sql-update-tel akarnának bekerülni a Hibernate szerint
(és ez exception-t okoz). De miért így működik?
Szerintem úgy kéne működnie, hogy megnézi a 100, 101 azonosítókkal van-e már rekord a település táblában.
Ha nincs akkor sql-insert-et, ha van akkor meg sql-update-et kéne végrehajtania.
Igazából egy saveOrUpdate() is így működik, az Id alapján eldönti ez most insert vagy update-e.
Az is kérdés hogy lehet-e így tárolni adatok az adatbázisba, lehet hogy egyenként kéne save()-et mondani mindhárom
objektumra külön-külön ?
Joe
További információk a(z) Javalist levelezőlistáról