In einer umfangreichen Anwendung habe ich beim einer Durchsicht der Hibernate Mappings ein seltsames Verhalten während des Unit Tests festgestellt:
Der Test läuft in einer RollBack Only Transaktion
Am Ende eines Tests wird ein Transaction Rollback ausgelöst.
Die nun getesteten Collections sind auf lazy und cache-usage=nonstrict-read-write gesetzt.
Wenn ich die Tests in dieser Konfiguration ausführe, werden Fehler angezeigt und es erscheinen "NoObjectWithGivenRow" Exceptions.
Es hilft ...
... den Collection Cache zu deaktivien
... die Tests einzeln auszuführen (Cache leer).
... nach dem Rollback ein sessionFactory.evictCollection(String) auszuführen
Ich vermute nun, dass in einem non-managed Environment (JDBC) zwar die geänderten Objekte nicht in den 2nd Level Cache übernommen werden, die Collections dort aber ankommen.
Bin ich hier vielleicht auf einen Fehler gestossen ?
Ich verwende Hibernate 3.1.2 und EhCache.