Hi All,
Could you please help me out with a problem that keeps bothering me. I use Hibernate with spring transaction management and Oracle 10g database.
Hibernate is initialized the next way:
Basically I get ObjectNotFoundException each time when
1. one read-only transaction gets an entity,
2. then some another concurrent transaction removes the entity from the database right after,
3. then the first one tries to lazily initialize a set in the entity, and not being capable of finding already removed rows throws the exception.
1 and 3 are executed in the same transaction, it seems like I have Read-Committed strategy. But, Oracle's read-only transactions are always serializable, which means that nothing in the database should change in scope of the transaction.
I wrote a small
test to prove that hibernate doesn't behave:
So log shows that transactions that began before database was changed still see the changes.
I spent quite a while trying to figure out the way to force hibernate to use oracle's read-only or serialized transactions but failed.
I even tried to set
hibernate.connection.isolation to 8, still didn't help.
Would appreciate any help!
Thanks in advance.