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