[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-2869) Atomic remove + add of unique properties to a persistent set fails
Pietu Pohjalainen (JIRA)
noreply at atlassian.com
Mon Oct 1 02:57:25 EDT 2007
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2869?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_28260 ]
Pietu Pohjalainen commented on HHH-2869:
----------------------------------------
Changing the insertions to be performed after deletions in file
src/org/hibernate/engine/ActionQueue.java
seems to fix this certain problem.
No idea about side effects though...
A patch against 3.2.5ga source:
--- clip ---
141c141
< executeActions( insertions );
---
> /* executeActions( insertions ); */
146a147
> executeActions( insertions );
> Atomic remove + add of unique properties to a persistent set fails
> ------------------------------------------------------------------
>
> Key: HHH-2869
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2869
> Project: Hibernate3
> Issue Type: Bug
> Components: core
> Affects Versions: 3.2.5
> Environment: Hibernate 3.2.5 (2007.07.31);
> Oracle 9
> Reporter: Pietu Pohjalainen
> Priority: Minor
> Attachments: hibernate-unique-showcase.zip
>
>
> Trying to remove and add equal objects to a persistent set with unique property on, fails.
> E.g. we have a set 'set' with one object, "X" contained in it. A sequence of
> set.clear();
> set.add("X");
> session.update(set);
> produces a unique constraint exception from the underlying database, because the update first tries to add the newly added objects, and only after that it tries to remove those.
> E.g. Oracle produces the following exception: "Caused by: java.sql.BatchUpdateException: ORA-00001: unique constraint (SHOWCASE.SYS_C0036053) violated"
> A workaround is would be to run the session.update(set); session.flush(); after clearing the set - but I would argue that interleaving the persistence-code with regular object handling code does not exactly fulfill the promise of 'transparent persistency'.
> Please see the attached showcase.zip, which sets up a database. There's a 'container', which contains a set of 'values', where values should be unique across all sets in the system. When trying to remove and add the same value to a set, the program throws an exception.
> The showcase driver script is located in class hibernate.Showcase. The object model classes are located in test.Container and test.Value.
--
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.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list