]
Some One commented on HHH-1268:
-------------------------------
1) Any update on this? It surprises me that there are still issues for basic relationships
such as this.
2) @ Kevin Jordan
How did you remove the unique constraint? Directly in the db? Is there a way to do it in
the annotations? I'm generating the db schema from the annotations and would like to
avoid any additional custom steps.
Thanks everyone.
Unidirection OneToMany causes duplicate key entry violation when
removing from list
-----------------------------------------------------------------------------------
Key: HHH-1268
URL:
https://hibernate.onjira.com/browse/HHH-1268
Project: Hibernate ORM
Issue Type: Bug
Affects Versions: 3.1, 3.5.6, 3.6.0
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: possible_solution.patch, 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.
For more information on JIRA, see: