[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-1268) Unidirection OneToMany causes duplicate key entry violation when removing from list

Avram Cherry (JIRA) noreply at atlassian.com
Tue Jul 20 17:38:37 EDT 2010


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1268?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=37857#action_37857 ] 

Avram Cherry commented on HHH-1268:
-----------------------------------

This is getting embarrassing.  When is this project going to start addressing some of the major outstanding bugs that have been around for almost 5 years?  This is the sort of bug that makes Hibernate unusable unless you have full control over the details of the structure of the database.  Even when you do, a DBA often looks at the resulting database and asks, "Why did you do it like this?" and you're forced to explain that something so simple and common simply doesn't work in Hibernate.

> Unidirection OneToMany causes duplicate key entry violation when removing from list
> -----------------------------------------------------------------------------------
>
>                 Key: HHH-1268
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1268
>             Project: Hibernate Core
>          Issue Type: Bug
>    Affects Versions: 3.1
>         Environment: 3.1 final
> MySql 4.1.14 using MYISAM tables
>            Reporter: Rex Madden
>            Assignee: Gail Badner
>             Fix For: 3.2.x, 3.3.x
>
>         Attachments: src.zip
>
>
> Simple OneToMany parent/child relationship using the default table structure (2 tables and a join table)
> Add 3 children to the parent.  Flush.  Remove the first child.  Flush throws error:
> Exception in thread "main" org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
> 	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:69)
> 	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
> 	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
> 	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:230)
> 	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:143)
> 	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:296)
> 	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
> 	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:980)
> 	at UnidirectionalOneToManyRemoveFromListBug.main(UnidirectionalOneToManyRemoveFromListBug.java:27)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:86)
> Caused by: java.sql.BatchUpdateException: Duplicate key or integrity constraint violation,  message from server: "Duplicate entry '5' for key 2"
> 	at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1461)
> 	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
> 	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
> 	... 11 more
> The problem is that there is a unique key on the relationship table that gets violated.  The session removes the last row in the relationship table, then attempts to rewrite the child_id's.  It fails since there is a uniqueness constraint on that column.

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