mapping:
Code:
<hibernate-mapping schema="ras" default-lazy="false">
<class name="smart.uniras.config.model.ReasonCodeList" table="ref_reason_codes_list">
<id name="id" column="reason_list_id">
<generator class="sequence">
<param name="sequence">seq_reason_codes_list</param>
</generator>
</id>
<property name="reasonCode" column="reason_code" />
<property name="reasonDesc" column="reason_desc" />
<property name="reasonField" column="reason_field" />
<property name="field1" column="field_1" />
<property name="field2" column="field_2" />
<property name="field3" column="field_3" />
<property name="field4" column="field_4" />
<property name="field5" column="field_5" />
<many-to-one name="system" column="system_id" class="smart.uniras.config.model.ConfigSystem" foreign-key="fk_reasoncodes_systemid" />
<many-to-one name="moduleType" column="module_type_id" class="smart.uniras.config.model.ConfigModuleType" foreign-key="fk_reasoncodes_modtypeid" />
</class>
</hibernate-mapping>
Code:
<hibernate-mapping schema="ras" default-lazy="false">
<class name="smart.uniras.config.model.ReasonCode" table="ref_reason_codes">
<id name="id" column="reason_id">
<generator class="sequence">
<param name="sequence">seq_reason_codes</param>
</generator>
</id>
<many-to-one name="subgroup" column="subgroup_id" class="smart.uniras.config.model.ConfigSubgroup" foreign-key="fk_reasoncodes_subgroupid" />
<many-to-one name="reasonList" column="reason_list_id" class="smart.uniras.config.model.ReasonCodeList" foreign-key="fk_reasoncodes_listid" />
</class>
</hibernate-mapping>
java code:
Code:
try {
s = getFactory().openSession();
tx = s.beginTransaction();
tx.begin();
//save reason codes for edit
for (Iterator it = reasonCodesForEdit.iterator(); it.hasNext();) {
ReasonCode reasonCode = (ReasonCode) it.next();
ReasonCodeList reasonCodeList = reasonCode.getReasonList();
reasonCode.setSubgroup(subGroup);
reasonCodeList.setSystem(system);
Long reasonCodeListId = getReasonCodeListId(reasonCodeList);
s.saveOrUpdate(reasonCode.getReasonList().getSystem());
if (reasonCodeListId == null) {
s.save(reasonCodeList);
System.out.println("new reasonCodeList was added to DB with ID " + reasonCodeList.getId());
} else {
reasonCodeList.setId(reasonCodeListId);
System.out.println("reasonCodeList is existing in DB with ID " + reasonCodeListId);
}
reasonCode.setReasonList(reasonCodeList);
s.saveOrUpdate(reasonCode);
System.out.println("updating reasonCode with ID " + reasonCode.getId());
}
//commit transactions
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
throw new SQLException(e);
} finally {
s.flush();
s.close();
}
error:
Code:
WARN JDBCExceptionReporter:77 - SQL Error: 2291, SQLState: 23000
ERROR JDBCExceptionReporter:78 - ORA-02291: integrity constraint (RAS.FK_REASONCODES_RSNLISTID) violated - parent key not found
ERROR AbstractFlushingEventListener:301 - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at smart.uniras.config.dao.hibernate.UpdateModuleDaoHibernate.updateReasonCodes(UpdateModuleDaoHibernate.java:107)
at smart.uniras.config.service.impl.UpdateModuleManagerImpl.updateReasonCodes(UpdateModuleManagerImpl.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy132.updateReasonCodes(Unknown Source)
at smart.uniras.config.web.ReasonCodeForm.updateRejectsFiltersParameters(ReasonCodeForm.java:889)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:187)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at smart.uniras.security.web.filter.SecurityFilter.doFilter(SecurityFilter.java:64)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at smart.uniras.security.web.filter.SecurityFilter.doFilter(SecurityFilter.java:64)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:246)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: java.sql.BatchUpdateException: ORA-02291: integrity constraint (RAS.FK_REASONCODES_RSNLISTID) violated - parent key not found