Ahoj,
chci vymazat JPA entitu, ktera muze byt refencovana pres cizi klice. V
takovem pripade chci uzivateli zobrazit nejake hlaseni "nelze
vymazat". Klasicke JDBC reseni bych delal pres DELETE FROM ...,
odchytnu SQLException a zobrazim hlaseni. V JPA/Hibernate mohu delat
neco podobneho:
try {
em.remove(...);
em.flush();
} catch () {
// nelze vymazat
}
Tady mne zarazi, ze:
1. catch chyti jakousi obecnou javax.persistence.PersistenceException
(nested org.hibernate.exception.GenericJDBCException a dalsi nested
java.sql.BatchUpdateException: failed batch)
2. Hibernate zaloguje chyby:
14:43:09,890 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: null
14:43:09,890 ERROR [JDBCExceptionReporter] failed batch
14:43:09,890 ERROR [AbstractFlushingEventListener] Could not
synchronize database state with session
Tak si rikam, ze to asi nebude spravne reseni, kdyz Hibernate loguje
chyby. Navic nechci mit v logu chyby, kdyz vlastne k zadne chybe
nedoslo. Nemohu ovsem najit, jak se ma v takovem pripade spravne
postupovat? Manualni kontrola JPQL/HQL query pred em.remove()? Pokud
ano, neni to trochu tezkopadne?
Dik za radu
Ondra Medek