Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hi, I want to insert and update a view to table using hibernate , and I have already set id in mapping file, the save/update function implements when there is no value change, but once change the value it will give such error says that
cannot modify a column which maps to a non key-preserved table
Pls help, thanks a lot!!
Hibernate version: Hibernate 3.0
Mapping documents: It is a view mapping
<hibernate-mapping>
<class name="com.chrt.car.hibernate.model.CarApprView" table="CAR_APPR_VIEW" schema="ICAREDVT">
<id name="carSeq" type="java.lang.String">
<column name="CAR_SEQ" length="20" />
<generator class="assigned" />
</id>
<property name="apprId" type="java.lang.String">
<column name="APPR_ID" length="10" />
</property>
<property name="fabGroup" type="java.lang.String">
<column name="FAB_GROUP" length="10" />
</property>
<property name="carType" type="java.lang.String">
<column name="CAR_TYPE" length="10" />
</property>
</class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
using sessionFactory auto-generate by eclipse.
Full stack trace of any exception that occurs:
2006-10-09 12:04:38,015 ERROR [ AbstractFlushingEventListener] - Could not synchronize database state with session
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
at org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:181)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:137)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransacti
onManager.java:496)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManag
er.java:469)
at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(Transaction
AspectSupport.java:266)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:643)
at com.chrt.car.struts.wf8d.delegate.Wf8dMasterDelegate$$EnhancerByCGLIB$$5d139a6e.save(<generated>)
at com.chrt.car.struts.wf8d.action.Wf8dAppAction.dhtmlButtons(Wf8dAppAction.java:103)
at com.chrt.car.struts.wf8d.action.Wf8dAppAction.unspecified(Wf8dAppAction.java:81)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:256)
at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:160)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.sql.BatchUpdateException: ORA-01779: cannot modify a column which maps to a non key-preserved table
Name and version of the database you are using: Oracle 9
The generated SQL (show_sql=true): If save no change data
2006-10-09 12:34:12,984 DEBUG [ SQL] - select carapprvie_.CAR_SEQ, carapprvie_.APPR_ID as APPR2
_42_, carapprvie_.FAB_GROUP as FAB3_42_, carapprvie_.CAR_TYPE as CAR4_42_, carapprvie_.ROW_NO as ROW5_42_, carapprvie_.APPR_N
AME as APPR6_42_, carapprvie_.APPR_DESC as APPR7_42_, carapprvie_.ACTIVE as ACTIVE42_, carapprvie_.APPR_USER_ID as APPR9_42_,
carapprvie_.APPR_USER_NAME as APPR10_42_, carapprvie_.DATE_STATUS as DATE11_42_, carapprvie_.APPR_STATUS as APPR12_42_, cara
pprvie_.TRAIL_APPR_ID as TRAIL13_42_ from ICAREDVT.CAR_APPR_VIEW carapprvie_ where carapprvie_.CAR_SEQ=?
Hibernate: select carapprvie_.CAR_SEQ, carapprvie_.APPR_ID as APPR2_42_, carapprvie_.FAB_GROUP as FAB3_42_, carapprvie_.CAR_T
YPE as CAR4_42_, carapprvie_.ROW_NO as ROW5_42_, carapprvie_.APPR_NAME as APPR6_42_, carapprvie_.APPR_DESC as APPR7_42_, cara
pprvie_.ACTIVE as ACTIVE42_, carapprvie_.APPR_USER_ID as APPR9_42_, carapprvie_.APPR_USER_NAME as APPR10_42_, carapprvie_.DAT
E_STATUS as DATE11_42_, carapprvie_.APPR_STATUS as APPR12_42_, carapprvie_.TRAIL_APPR_ID as TRAIL13_42_ from ICAREDVT.CAR_APP
R_VIEW carapprvie_ where carapprvie_.CAR_SEQ=?
2006-10-09 12:34:12,984 DEBUG [ StringType] - binding 'WF8D-00001311' to parameter: 1
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning '2' as column: APPR2_42_
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning 'FAB 3' as column: FAB3_42_
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning '8DWF' as column: CAR4_42_
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning '1' as column: ROW5_42_
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning 'Manager' as column: APPR6_42_
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning null as column: APPR7_42_
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning 'Y' as column: ACTIVE42_
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning 'e10111' as column: APPR9_42_
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning 'MADHAVAN Pandurangan/Fab Ops/CSP/ST Group' as
column: APPR10_42_
2006-10-09 12:34:13,000 DEBUG [ TimestampType] - returning null as column: DATE11_42_
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning null as column: APPR12_42_
2006-10-09 12:34:13,000 DEBUG [ StringType] - returning '2' as column: TRAIL13_42_
2006-10-09 12:34:13,015 DEBUG [ CarApprViewDAO] - save successful
Debug level Hibernate log excerpt: