Místo merge() je potřeba volat persist(). A ano, v JSE může být
persistentní kontext EXTENDED. Vybírá se to při vytváření kontextu.
Zda je entita ve stavu managed lze zjistit přes EntityContext.contains() a
na přechody mezi stavy jsou anotace @PostRemove, @PostUpdate, atd.
Z.T.
--
Zdenek Tronicek
Dobrý den, pane Troníčku,
máte pravdu, děkuji! Tohle mě vůbec nenapadlo.
Přidal jsem při selhání prvního commit() tedy merge(), abych entitu vrátil
do managed stavu a pak správně další commit() opět selže.
JPA používám v desktopové Java aplikaci (žádné aplikační servery apod.),
takže persitentní
Dobrý den,
jakého typu je persistentní kontext? Jestliže TRANSACTION_SCOPED, tak na
konci transakce (při prvním commitu) jsou všechny entity převedeny do
stavu detached a při druhém commitu není v persistentním kontextu žádná
entita a tudíž se do databáze nic nezapíše.
Z.T.
--
Zdenek Tronicek
FI
Dobrý den,
prosím můžete mi někdo pomoci vysvětlit a pochopit následující chování v
JPA?
Záměrně měním primární klíč entity, což je v JPA zakázáno. První commit tedy
správně vyhodí "Exception Description: The attribute [date] of class
[some.package.Holiday] is mapped to a primary key column in the