-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: DB cursor usage for SQL-Insert.
PostPosted: Wed May 28, 2008 2:16 am 
Newbie

Joined: Tue May 27, 2008 9:37 am
Posts: 1
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:


Top
 Profile  
 
 Post subject:
PostPosted: Wed May 28, 2008 9:35 am 
Expert
Expert

Joined: Tue May 13, 2008 3:42 pm
Posts: 919
Location: Toronto & Ajax Ontario www.hibernatemadeeasy.com
An SQLGrammar exception is just that - a problem with your SQL.

Often, an entity is incorrectly mapped to a database table, or a column name/property mapping is incorrect. As a result, when the SQL generated goes to the database, a non-existent table or column is referenced, and you get this exception.

_________________
Cameron McKenzie - Author of "Hibernate Made Easy" and "What is WebSphere?"
http://www.TheBookOnHibernate.com Check out my 'easy to follow' Hibernate & JPA Tutorials


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.