PersistenceException is thrown or not depending on wheter there is @Version annotation
--------------------------------------------------------------------------------------
Key: EJB-422
URL:
http://opensource.atlassian.com/projects/hibernate/browse/EJB-422
Project: Hibernate Entity Manager
Issue Type: Bug
Components: EntityManager
Environment: discovered on Windowx XP, using JPA with Hibernate implementation
Reporter: Paweł Szulc
Example:
PriorityProjectRef is normal entity class. If we dont use OptimisticLocking for it (there
is no @Version) then test that u can see below will pass. Persisting entity with id set to
value of existing entitty will throw an exception - PersistenceException.
@Test(expected = PersistenceException.class)
public void testUniqueKey() {
PriorityProjectRef entity = new PriorityProjectRef();
dao.persist(entity);
PriorityProjectRef entity2 = new PriorityProjectRef();
entity2.setId(entity.getId());
dao.persist(entity2);
}
However if we add to our PriorityProjectRef entity class new field annotated with
@Version (to use optimistic locking), the test will fail. There will be no
PersistenceException thrown. Second entity will be saved, with new id set from the
sequence.
In other words:
without @Version - only one entity persisted, PersistenceException thrown
with @Version - two enites persisted (with different IDs), PersistenceException not
thrown
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira