[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-1296) Non lazy loaded List updates done in wrong order, cause exception

Jeff Zarnett (JIRA) noreply at atlassian.com
Fri May 25 11:11:05 EDT 2007


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1296?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_27054 ] 

Jeff Zarnett commented on HHH-1296:
-----------------------------------

Nigel has correctly and fully outlined the problem, so it is not necessary for me to repeat it. I have made the change that removes the unique constraint and leads to success in the attached test cases.

Two files are now attached to this issue. The larger of the two is unicode and the smaller is ANSI, but their contents are the same. They contain the (quite small) diff to resolve the issue.

> Non lazy loaded List updates done in wrong order, cause exception
> -----------------------------------------------------------------
>
>                 Key: HHH-1296
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1296
>             Project: Hibernate3
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.0.5
>         Environment: Hibernate 3.0.5 - any database (checked postgres 7/8, mysql 4 & 5, db2 v8)
> NOT using lazy loading - the tx's are wrapped by session beans, so lazy loading is not allowed.
>            Reporter: David Birch
>            Priority: Critical
>         Attachments: listupdate_patch.txt, listupdate_patch.txt, listupdate_testcase.zip
>
>
> The logic behind list updates is not quite right, nor was it in v2 (only now i have a DBA who won't let up...)
> The scenario is:
> a bean with list property, and the list has a number of items in it (say 4, index 0-3), an item is then removed (say item at index 2), and the bean is requested to be saved.
> From what i can see in the SQL traces, the same statements are issues whe lazy loading is on or off, they are:
> [18/12/05 19:48:50:766 EST] 00000036 SystemOut     O Hibernate: delete from TGE_CLIENT_POLICY where CLIENT_ID=? and POSITION=?
> [18/12/05 19:48:50:766 EST] 00000036 SystemOut     O Hibernate: update TGE_CLIENT_POLICY set POLICY_NK=? where CLIENT_ID=? and POSITION=?
> So, i can only assume (as when this fails, the row with index 1 above the removed row is nuked!), hibernate removes the item at index 3, and then copies the value of the item at index 3 onto the row for item at index 2. Fair enough but...
> When i have lazy loading off, i get DB exceptions like
> Duplicate key or integrity constraint violation message from server: "Duplicate entry '1-999999' for key 1"
> so, there is some nasty in there, which is not updating the correct row - this has happened since 2.1.8 that i know of :(
> i will try & look @ the source, but won't get a chance until after xmas...

-- 
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