]
Brian Leathem commented on HHH-1113:
------------------------------------
I was about to file this same bug, but found this issue in a search. I don't see
anywhere in the documentation that this is a limitation. I do see a documented limitation
for the idbag generator strategy "native", but not for the "identity"
strategy used here. Can this bug be re-opened? Or maybe the documentation should be
corrected?
idbag composite-element cascade-on-save gives "could not bind
value POST_INSERT_INDICATOR to" collection-id
-----------------------------------------------------------------------------------------------------------
Key: HHH-1113
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1113
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.0.5, 3.1 rc 1, 3.1 rc2
Environment: MySQL any, MSSQL any
Reporter: Tea Yu
Priority: Blocker
- Parent contains a List of composite-element childs (idbag)
- the collection is cascade on all-delete-orphan
- when saving a parent, child couldn't be persisted due to "could not bind value
'POST_INSERT_INDICATOR' to parameter", which is supposed to be generated in
DB
------------------
mapping
------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Parent" table="parent">
<id name="id" column="parent_id" type="long"
unsaved-value="0">
<generator class="native" />
</id>
<idbag name="childs" table="childs"
cascade="all-delete-orphan">
<collection-id column="child_id" type="long">
<generator class="identity">
<param name="unsaved-value">0</param>
</generator>
</collection-id>
<key column="_parent_id" />
<composite-element class="Child">
<property name="name" column="name"
type="string" />
</composite-element>
</idbag>
</class>
</hibernate-mapping>
------------------
stack trace
------------------
31/10/2005 17:16:20 - DEBUG [main] (AbstractBatcher.java:344) - insert into childs
(_parent_id, child_id, name) values (?, ?, ?)
31/10/2005 17:16:20 - DEBUG [main] (AbstractBatcher.java:413) - preparing statement
31/10/2005 17:16:20 - DEBUG [main] (NullableType.java:79) - binding '14' to
parameter: 1
31/10/2005 17:16:20 - DEBUG [main] (NullableType.java:79) - binding
'POST_INSERT_INDICATOR' to parameter: 2
31/10/2005 17:16:20 - INFO [main] (NullableType.java:89) - could not bind value
'POST_INSERT_INDICATOR' to parameter: 2
31/10/2005 17:16:20 - DEBUG [main] (NullableType.java:79) - binding 'test' to
parameter: 3
31/10/2005 17:16:20 - DEBUG [main] (BatchingBatcher.java:28) - Adding to batch
31/10/2005 17:16:20 - DEBUG [main] (AbstractCollectionPersister.java:1045) - done
inserting collection: 1 rows inserted
31/10/2005 17:16:20 - DEBUG [main] (BatchingBatcher.java:55) - Executing batch size: 1
31/10/2005 17:16:20 - DEBUG [main] (AbstractBatcher.java:317) - about to close
PreparedStatement (open PreparedStatements: 1, globally: 1)
31/10/2005 17:16:20 - DEBUG [main] (AbstractBatcher.java:459) - closing statement
31/10/2005 17:16:20 - DEBUG [main] (JDBCExceptionReporter.java:63) - Could not execute
JDBC batch update [insert into childs (_parent_id, child_id, name) values (?, ?, ?)]
java.sql.BatchUpdateException: Statement parameter 2 not set.
at
com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:828)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:193)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:230)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:144)
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:905)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:345)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at test.Test.testInsert(Test.java:27)
at test.Test.main(Test.java:15)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: