Hello everybody,
I've got a problem I couldn't find any hints about at all. Hibernate seems to use a database cursor to execute an insert statement (the db doc says a statement was used which is no SELECT or VALUES clause). The statement and the data itself is ok.
DB2 SQL error: SQLCODE: -517, SQLSTATE: 07005, SQLERRMC: SQL_CURSH200C1
createRecord(de.corag.bpm.recordmgmt.vo.record.RecordVO record)
org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [de.corag.bpm.recordmgmt.domain.record.RecordImpl]; bad SQL grammar [insert into ELEMENT (ELEMENT_ID_ID, ELEMENT_ID_VERSION, TYPE, CREATE_DATE, CUSTOMER_ID, ELEMENT_LOCK_FK, STATIC_PROPERTI_FK, ACL_FK, ID) values (?, ?, ?, ?, ?, ?, ?, ?, default)]; nested exception is com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -517, SQLSTATE: 07005, SQLERRMC: SQL_CURSH200C1
Any help or hints where to find it would be greatly appreciated.
Thanks in advance
Otto
Hibernate version:
3.1.1
Mapping documents:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Attention: Generated code! Do not modify by hand!
Generated by: hibernate.hbm.xml.vsl in andromda-hibernate-cartridge.
-->
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-cascade="none">
<class name="de.corag.bpm.recordmgmt.domain.record.ElementImpl" table="ELEMENT" dynamic-insert="false" dynamic-update="false">
<id name="id" type="java.lang.Long" unsaved-value="null">
<column name="ID" sql-type="BIGINT"/>
<generator class="native">
</generator>
</id>
<component name="elementId" class="de.corag.bpm.recordmgmt.identifier.VersionIdentifierImpl">
<property name="id" type="java.lang.Long">
<column name="ELEMENT_ID_ID" not-null="true" unique="false" sql-type="BIGINT"/>
</property>
<property name="version" type="java.lang.Long">
<column name="ELEMENT_ID_VERSION" not-null="true" unique="false" sql-type="BIGINT"/>
</property>
</component>
<property name="type" type="de.corag.bpm.recordmgmt.type.ElementTypeEnum">
<column name="TYPE" not-null="true" unique="false" sql-type="VARCHAR(256)"/>
</property>
<property name="createDate" type="java.sql.Timestamp">
<column name="CREATE_DATE" not-null="true" unique="false" sql-type="TIMESTAMP"/>
</property>
<property name="customerId" type="java.lang.String">
<column name="CUSTOMER_ID" not-null="true" unique="false" sql-type="VARCHAR(256)"/>
</property>
<set name="dynamicProperties" order-by="ELEMENT_FK" lazy="true" fetch="select" inverse="false" cascade="delete">
<key foreign-key="DYNPROP_ELEM_FKC">
<column name="ELEMENT_FK" sql-type="BIGINT"/>
</key>
<one-to-many class="de.corag.bpm.recordmgmt.domain.record.DynamicPropertyImpl"/>
</set>
<many-to-one name="elementLock" class="de.corag.bpm.recordmgmt.domain.record.ElementLockImpl" foreign-key="ELEM_ELEMLOCK_FKC" cascade="delete" lazy="false" fetch="select">
<column name="ELEMENT_LOCK_FK" not-null="false" sql-type="BIGINT" unique="true"/>
</many-to-one>
<set name="historyentries" order-by="ELEMENT_FK" lazy="true" fetch="select" inverse="false" cascade="delete">
<key foreign-key="HISTENTRY_ELEM_FKC">
<column name="ELEMENT_FK" sql-type="BIGINT"/>
</key>
<one-to-many class="de.corag.bpm.recordmgmt.domain.record.HistoryEntryImpl"/>
</set>
<set name="notes" order-by="ELEMENT_FK" lazy="true" fetch="select" inverse="false" cascade="delete">
<key foreign-key="NOTE_ELEMENT_FKC">
<column name="ELEMENT_FK" sql-type="BIGINT"/>
</key>
<one-to-many class="de.corag.bpm.recordmgmt.domain.record.NoteImpl"/>
</set>
<many-to-one name="staticProperties" class="de.corag.bpm.recordmgmt.domain.record.StaticPropertyImpl" foreign-key="ELEM_STATICPRP_FKC" cascade="delete" lazy="proxy" fetch="select">
<column name="STATIC_PROPERTI_FK" not-null="false" sql-type="BIGINT" unique="true"/>
</many-to-one>
<many-to-one name="acl" class="de.corag.bpm.recordmgmt.domain.security.AclImpl" cascade="delete" foreign-key="ELEMENT_ACL_FKC" lazy="proxy" fetch="select">
<column name="ACL_FK" not-null="true" sql-type="BIGINT"/>
</many-to-one>
<joined-subclass name="de.corag.bpm.recordmgmt.domain.record.CompositeElementImpl" table="COMPOSITE_ELEMENT" dynamic-insert="false" dynamic-update="false" abstract="false">
<key foreign-key="COMPOSITE_ELEMENTIFKC">
<column name="ID" sql-type="BIGINT"/>
</key>
<property name="name" type="java.lang.String">
<column name="NAME" not-null="true" unique="false" sql-type="VARCHAR(256)"/>
</property>
<property name="recordId" type="java.lang.Long">
<column name="RECORD_ID" not-null="false" unique="false" sql-type="BIGINT"/>
</property>
<set name="children" table="CHILDREN2PARENTS" order-by="CHILDREN_FK" lazy="true" fetch="select" inverse="false" cascade="save-update">
<key foreign-key="ELEMENT_PARENT_FKC">
<column name="PARENTS_FK" sql-type="BIGINT"/>
</key>
<many-to-many class="de.corag.bpm.recordmgmt.domain.record.ElementImpl" foreign-key="COMPELEM_CHILD_FKC">
<column name="CHILDREN_FK" sql-type="BIGINT"/>
</many-to-many>
</set>
<joined-subclass name="de.corag.bpm.recordmgmt.domain.record.RecordImpl" table="RECORD" dynamic-insert="false" dynamic-update="false" abstract="false">
<key foreign-key="RECORDIFKC">
<column name="ID" sql-type="BIGINT"/>
</key>
<property name="closeDate" type="java.sql.Timestamp">
<column name="CLOSE_DATE" not-null="false" unique="false" sql-type="TIMESTAMP"/>
</property>
<set name="organisationUnit" order-by="RECORD_FK" lazy="true" fetch="select" inverse="false" cascade="delete">
<key foreign-key="ORGANISATION_UNITC">
<column name="RECORD_FK" sql-type="BIGINT"/>
</key>
<one-to-many class="de.corag.bpm.recordmgmt.domain.admin.OrganisationUnitImpl"/>
</set>
<many-to-one name="recordDefinition" class="de.corag.bpm.recordmgmt.domain.admin.RecordDefinitionImpl" foreign-key="REC_RECDEF_FKC" cascade="delete" lazy="proxy" fetch="select">
<column name="RECORD_DEFINITI_FK" not-null="true" sql-type="BIGINT" unique="true"/>
</many-to-one>
</joined-subclass>
<joined-subclass name="de.corag.bpm.recordmgmt.domain.record.FolderImpl" table="FOLDER" dynamic-insert="false" dynamic-update="false" abstract="false">
<key foreign-key="FOLDERIFKC">
<column name="ID" sql-type="BIGINT"/>
</key>
</joined-subclass>
</joined-subclass>
<joined-subclass name="de.corag.bpm.recordmgmt.domain.record.BaseElementImpl" table="BASE_ELEMENT" dynamic-insert="false" dynamic-update="false" abstract="true">
<key foreign-key="BASE_ELEMENTIFKC">
<column name="ID" sql-type="BIGINT"/>
</key>
<property name="systemRef" type="java.lang.String">
<column name="SYSTEM_REF" not-null="true" unique="false" sql-type="VARCHAR(256)"/>
</property>
<property name="description" type="java.lang.String">
<column name="DESCRIPTION" not-null="false" unique="false" sql-type="VARCHAR(256)"/>
</property>
<property name="validationGroupName" type="java.lang.String">
<column name="VALIDATION_GROUP_N" not-null="true" unique="false" sql-type="VARCHAR(256)"/>
</property>
<joined-subclass name="de.corag.bpm.recordmgmt.domain.record.DocumentRefImpl" table="DOCUMENT_REF" dynamic-insert="false" dynamic-update="false" abstract="false">
<key foreign-key="DOCUMENT_REFIFKC">
<column name="ID" sql-type="BIGINT"/>
</key>
<property name="docId" type="java.lang.String">
<column name="DOC_ID" not-null="true" unique="false" sql-type="VARCHAR(256)"/>
</property>
<property name="docClassId" type="java.lang.String">
<column name="DOC_CLASS_ID" not-null="true" unique="false" sql-type="VARCHAR(256)"/>
</property>
</joined-subclass>
<joined-subclass name="de.corag.bpm.recordmgmt.domain.record.UriImpl" table="URI" dynamic-insert="false" dynamic-update="false" abstract="false">
<key foreign-key="URIIFKC">
<column name="ID" sql-type="BIGINT"/>
</key>
<property name="target" type="java.lang.String">
<column name="TARGET" not-null="true" unique="false" sql-type="VARCHAR(256)"/>
</property>
</joined-subclass>
</joined-subclass>
</class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
AndroMDA 3.2. Spring 1.2.7
Full stack trace of any exception that occurs:
DB2 SQL error: SQLCODE: -517, SQLSTATE: 07005, SQLERRMC: SQL_CURSH200C1
createRecord(de.corag.bpm.recordmgmt.vo.record.RecordVO record)
org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [de.corag.bpm.recordmgmt.domain.record.RecordImpl]; bad SQL grammar [insert into ELEMENT (ELEMENT_ID_ID, ELEMENT_ID_VERSION, TYPE, CREATE_DATE, CUSTOMER_ID, ELEMENT_LOCK_FK, STATIC_PROPERTI_FK, ACL_FK, ID) values (?, ?, ?, ?, ?, ?, ?, ?, default)]; nested exception is com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -517, SQLSTATE: 07005, SQLERRMC: SQL_CURSH200C1
com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -517, SQLSTATE: 07005, SQLERRMC: SQL_CURSH200C1
at com.ibm.db2.jcc.c.fg.e(fg.java:1596)
at com.ibm.db2.jcc.c.fg.a(fg.java:1225)
at com.ibm.db2.jcc.b.gb.n(gb.java:718)
at com.ibm.db2.jcc.b.gb.i(gb.java:255)
at com.ibm.db2.jcc.b.gb.c(gb.java:53)
at com.ibm.db2.jcc.b.w.c(w.java:46)
at com.ibm.db2.jcc.b.vb.h(vb.java:151)
at com.ibm.db2.jcc.c.fg.p(fg.java:1220)
at com.ibm.db2.jcc.c.gg.d(gg.java:2316)
at com.ibm.db2.jcc.c.gg.W(gg.java:457)
at com.ibm.db2.jcc.c.gg.executeUpdate(gg.java:440)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1968)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2405)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:37)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:269)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:617)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:366)
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:614)
at de.corag.bpm.recordmgmt.domain.record.RecordDaoBase.create(RecordDaoBase.java:206)
at de.corag.bpm.recordmgmt.domain.record.RecordDaoBase.create(RecordDaoBase.java:193)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy13.create(Unknown Source)
at de.corag.bpm.recordmgmt.service.record.RecordManagementServiceImpl.handleCreateRecord(RecordManagementServiceImpl.java:44)
at de.corag.bpm.recordmgmt.service.record.RecordManagementServiceBase.createRecord(RecordManagementServiceBase.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at de.corag.bpm.recordmgmt.security.RecordMgmtSecurityInterceptor.invoke(RecordMgmtSecurityInterceptor.java:215)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy22.createRecord(Unknown Source)
at de.corag.bpm.cone.test.RecordManagementServiceTest.createRecord(RecordManagementServiceTest.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
at org.testng.TestRunner.runWorkers(TestRunner.java:712)
at org.testng.TestRunner.privateRun(TestRunner.java:582)
at org.testng.TestRunner.run(TestRunner.java:477)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
at org.testng.SuiteRunner.run(SuiteRunner.java:198)
at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
at org.testng.TestNG.run(TestNG.java:708)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
Name and version of the database you are using:
DB2 v9.1.0.356
PTF NT32
The generated SQL (show_sql=true):
insert into ELEMENT (ELEMENT_ID_ID, ELEMENT_ID_VERSION, TYPE, CREATE_DATE, CUSTOMER_ID, ELEMENT_LOCK_FK, STATIC_PROPERTI_FK, ACL_FK, ID) values (?, ?, ?, ?, ?, ?, ?, ?, default)
Debug level Hibernate log excerpt:
|