Hi. In the example created for this issue (please see: [https://github.com/koen-serneels/hibernate-uc-violation|https://github.com/koen-serneels/hibernate-uc-violation]) is an entity with a single property ‘value’ and unique constraint. Initially there is an existing instance with it’s property ‘value’ equal to ‘val1’. When we now do following within the same transaction:
* change the value on the existing entity from “val1” to “val2” * add a new entity with “val1”
We get a ConstraintViolationException because Hibernate is executing the insert before the update. Now ;
* Is , is this actually expected knowing that Hibernate knows about the unique constraint and that it would make more sense to perform the insert after the update ? * Is there a more elegant way to deal with or is this than performing manual flushes as illustrated by the test case a bug ? Btw; I posted this first on the forum ([https://discourse.hibernate.org/t/hibernate-insert-update-ordering-wrt-unique-constraints/4201|https://discourse.hibernate.org/t/hibernate-insert-update-ordering-wrt-unique-constraints/4201], but in absence of any response I started thinking this might be a bug/feature. Thanks\! |
|