- 首页
- Java开发
- org.hibernate.TransientObjectException: 对象引用了一个未保存的瞬态实例
org.hibernate.TransientObjectException: 对象引用了一个未保存的瞬态实例
[英] org.hibernate.TransientObjectException: object references an unsaved transient instance
本文介绍了org.hibernate.TransientObjectException: 对象引用了一个未保存的瞬态实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在这里我试图更新 SupplierPaidDetail
包括以下数据 (supplierPaidOnlines
,supplierPaidCashs
,supplierPaidChecks
)我的代码,但这显示异常.
JSP 页面:
<s:iterator value="paidList";var=pdlst"><div class="box"><span class="label">付款日期</span><span class="ib"><s:hidden name="id";id=已付费"值=%{paidId}"/><s:hidden name="supplierPaymentDetails.id";值=%{supplierPaymentId}"/><s:textfield name="paymentDate";id=付款日期"值=%{paymentDate}"/></span>
<div class="box"><span class="label">支付方式</span><span class="ib"><s:textfield name="paymentMode";id="payment_mode";只读=真"值=%{payment_mode}"/></span>
<s:if test="cashActionList.size>0"><s:iterator value="cashActionList";状态=行状态"><div class="box"><span class="label">Amount</span><span class="ib"><s:textfield name="supplierPaidCashes[%{#rowstatus.index}].amount";id=金额"值=%{amount}"/></span>
<div class="box"><span class="label">TO Person</span><span class="ib"><s:hidden name="supplierPaidCashes[%{#rowstatus.index}].id";id=id"值=%{id}"/><s:textfield name="supplierPaidCashes[%{#rowstatus.index}].toPerson";id=toPerson"值=%{toPerson}"/></span>
<div class="box"><span class="label">Designation</span><span class="ib"><s:textfield name="supplierPaidCashes[%{#rowstatus.index}].Designation";id=名称"值=%{指定}"/></span>
<div class="box"><span class="label">收据号</span><span class="ib"><s:textfield name="supplierPaidCashes[%{#rowstatus.index}].receiptNo";id=收据号"值=%{reciptNo}"/></span>
</s:迭代器></s:if></s:迭代器></s:if></s:form>
在行动:
public class hbmCashAction extends ActionSupport 实现 ModelDriven{SupplierPaidDetails spa = new SupplierPaidDetails();公共字符串更新(){System.out.println("--------");System.out.println("id" + spa.getId() + "" + spa.getPaymentDate());SupplierPaymentDetails spdd = new SupplierPaymentDetails();spa.setSupplierPaymentDetails(spdd);列表<SupplierPaidCash>aca = spa.getSupplierPaidCashes();for (SupplierPaidCash ss : aca) {System.out.println(现金明细");ss.setSupplierPaidDetails(spa);System.out.println(ss.getId() + " " + ss.getAmount() + " " + ss.getToPerson());}列表<SupplierPaidCheck>ax = spa.getSupplierPaidChecks();for (SupplierPaidCheck ss : ax) {System.out.println(查看详情");ss.setSupplierPaidDetails(spa);System.out.println(ss.getId() + " " + ss.getPaidToAccNo() + " " + ss.getPayableAt());}列表<SupplierPaidOnline>onl = spa.getSupplierPaidOnlines();对于(SupplierPaidOnline ss:onl){System.out.println("在线详情");ss.setSupplierPaidDetails(spa);System.out.println(ss.getId() + " " + ss.getPaidToAccNo() + " " + ss.getPayRefNo());}System.out.println("--------");CashDao co = new CashDao();co.update(spa);返回成功;}}
DAO:
公共类 CashDao {公共无效更新(SupplierPaidDetails spd){会话会话 = HibernateUtil.getSessionFactory().openSession();session.beginTransaction();尝试 {session.update(spd);} catch (HibernateException e) {System.out.println("异常" + e);session.getTransaction().rollback();}session.getTransaction().commit();}}
SupplierPaidDetalis
:
public class SupplierPaidDetails 实现 java.io.Serializable {私人长ID;私人供应商付款详细信息供应商付款详细信息;私人字符串支付模式;私人日期付款日期;私人日期添加日期;私有字符串状态;私人列表<SupplierPaidOnline>供应商PaidOnlines = new ArrayList();私人列表<SupplierPaidCash>供应商支付现金 = 新的 ArrayList();私人列表<SupplierPaidCheck>供应商付费检查 = 新的 ArrayList();/getter 和 setter}
supplierPaidDetails.hbm.xml
:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd><!-- 由 Hibernate Tools 3.6.0 于 2014 年 5 月 10 日晚上 11:18:04 生成 --><休眠映射><class name="iland.hbm.SupplierPaidDetails";表=supplier_paid_details";目录=retail_shop";动态更新=真"><id name="id";type="java.lang.Long"><列名=id"/><生成器类=身份";/></id><多对一名称=supplierPaymentDetails"class =iland.hbm.SupplierPaymentDetails"获取=选择"><列名=supp_payment_id";非空=真"/></多对一><属性名称=支付模式"类型=字符串"><列名=payment_mode";长度=20"/></属性><财产名称=付款日期"类型=日期"><列名=payment_date"长度=10"/></属性><属性名称=添加日期"类型=时间戳"><列名=添加日期"长度=19"默认=0";/></属性><属性名称=状态"类型=字符串"><列名=状态"长度=20"/></属性><list name="supplierPaidOnlines";表=supplier_paid_online";逆=真"懒惰=真"获取=选择"级联=所有"><key column="spd_id";/><list-index column=id"/><一对多课程=iland.hbm.SupplierPaidOnline"/></list><key column="spd_id";/><list-index column=id"/><一对多课程=iland.hbm.SupplierPaidCash"/></list><key column="spd_id";/><list-index column=id"/><一对多类=iland.hbm.SupplierPaidCheck"/></list></class></hibernate-mapping>
例外:
SEVERE:处理请求期间发生异常:对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例:iland.hbm.SupplierPaymentDetailsorg.hibernate.TransientObjectException:对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例:iland.hbm.SupplierPaymentDetails在 org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:243)在 org.hibernate.type.EntityType.getIdentifier(EntityType.java:456)在 org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:121)在 org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2184)在 org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2559)在 org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2495)在 org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2822)在 org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:113)在 org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)在 org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)在 org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:185)在 org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)在 org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)在 org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)在 org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)在 org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)在 iland.payment.CashDao.update(CashDao.java:57)在 iland.payment.hbmCashAction.update(hbmCashAction.java:64)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在 java.lang.reflect.Method.invoke(Method.java:483)在 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)在 com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)在 org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)在 org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:161)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)在 org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)在 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563)在 org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)在 org.apache.tomcat.util.net.JioEndpoint$SocketProcessor.run(JioEndpoint.java:310)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)在 java.lang.Thread.run(Thread.java:744)
如何解决上述异常?
解决方案
On update
hibernate 要求所有对象都是持久化的,所以你必须get
/从会话加载
SupplierPaymentDetails
并设置为SupplierPaidDetails
.如果您通过第一个实体可用的 id 获取对象,则可以执行此操作.要获取第二个实体,您需要在 DAO 中编写一个方法,该方法具有 id 参数并返回实体对象.如果您手动管理会话和事务,则必须在那里打开一个新会话和事务.
Here I am trying to update SupplierPaidDetail
including data in(supplierPaidOnlines
,supplierPaidCashes
,supplierPaidChecks
) following are my code but this is showing exception.
JSP Page:
<s:form action="UpdatedPaid" method="post">
<s:if test="paidList.size>0">
<s:iterator value="paidList" var="pdlst">
<div class="box">
<span class="label">Payment Date</span>
<span class="ib">
<s:hidden name="id" id="paidId" value="%{paidId}"/>
<s:hidden name="supplierPaymentDetails.id" value="%{supplierPaymentId}"/>
<s:textfield name="paymentDate" id="paymentDate" value="%{paymentDate}"/>
</span>
</div>
<div class="box">
<span class="label">Payment Mode</span>
<span class="ib">
<s:textfield name="paymentMode" id="payment_mode" readonly="true" value="%{payment_mode}"/>
</span>
</div>
<s:if test="cashActionList.size>0">
<s:iterator value="cashActionList" status="rowstatus">
<div class="box">
<span class="label">Amount</span>
<span class="ib">
<s:textfield name="supplierPaidCashes[%{#rowstatus.index}].amount" id="amount" value="%{amount}"/>
</span>
</div>
<div class="box">
<span class="label">TO Person</span>
<span class="ib">
<s:hidden name="supplierPaidCashes[%{#rowstatus.index}].id" id="id" value="%{id}"/>
<s:textfield name="supplierPaidCashes[%{#rowstatus.index}].toPerson" id="toPerson" value="%{toPerson}"/>
</span>
</div>
<div class="box">
<span class="label">Designation</span>
<span class="ib">
<s:textfield name="supplierPaidCashes[%{#rowstatus.index}].Designation" id="Designation" value="%{Designation}"/>
</span>
</div>
<div class="box">
<span class="label">Receipt No</span>
<span class="ib">
<s:textfield name="supplierPaidCashes[%{#rowstatus.index}].receiptNo" id="receiptNo" value="%{reciptNo}"/>
</span>
</div>
</s:iterator>
</s:if>
</s:iterator>
</s:if>
</s:form>
In Action:
public class hbmCashAction extends ActionSupport implements ModelDriven<SupplierPaidDetails> {
SupplierPaidDetails spa = new SupplierPaidDetails();
public String update() {
System.out.println("--------");
System.out.println("id" + spa.getId() + " " + spa.getPaymentDate());
SupplierPaymentDetails spdd = new SupplierPaymentDetails();
spa.setSupplierPaymentDetails(spdd);
List<SupplierPaidCash> aca = spa.getSupplierPaidCashes();
for (SupplierPaidCash ss : aca) {
System.out.println("Cash Details");
ss.setSupplierPaidDetails(spa);
System.out.println(ss.getId() + " " + ss.getAmount() + " " + ss.getToPerson());
}
List<SupplierPaidCheck> ax = spa.getSupplierPaidChecks();
for (SupplierPaidCheck ss : ax) {
System.out.println("Check Details");
ss.setSupplierPaidDetails(spa);
System.out.println(ss.getId() + " " + ss.getPaidToAccNo() + " " + ss.getPayableAt());
}
List<SupplierPaidOnline> onl = spa.getSupplierPaidOnlines();
for (SupplierPaidOnline ss : onl) {
System.out.println("Online Details");
ss.setSupplierPaidDetails(spa);
System.out.println(ss.getId() + " " + ss.getPaidToAccNo() + " " + ss.getPayRefNo());
}
System.out.println("--------");
CashDao co = new CashDao();
co.update(spa);
return SUCCESS;
}
}
DAO:
public class CashDao {
public void update(SupplierPaidDetails spd) {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
try {
session.update(spd);
} catch (HibernateException e) {
System.out.println("Exception " + e);
session.getTransaction().rollback();
}
session.getTransaction().commit();
}
}
SupplierPaidDetalis
:
public class SupplierPaidDetails implements java.io.Serializable {
private Long id;
private SupplierPaymentDetails supplierPaymentDetails;
private String paymentMode;
private Date paymentDate;
private Date addDate;
private String status;
private List<SupplierPaidOnline> supplierPaidOnlines = new ArrayList();
private List<SupplierPaidCash> supplierPaidCashes = new ArrayList();
private List<SupplierPaidCheck> supplierPaidChecks = new ArrayList();
/getter and setter
}
supplierPaidDetails.hbm.xml
:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated May 10, 2014 11:18:04 PM by Hibernate Tools 3.6.0 -->
<hibernate-mapping>
<class name="iland.hbm.SupplierPaidDetails" table="supplier_paid_details" catalog="retail_shop" dynamic-update="true">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="supplierPaymentDetails" class="iland.hbm.SupplierPaymentDetails" fetch="select">
<column name="supp_payment_id" not-null="true" />
</many-to-one>
<property name="paymentMode" type="string">
<column name="payment_mode" length="20" />
</property>
<property name="paymentDate" type="date">
<column name="payment_date" length="10" />
</property>
<property name="addDate" type="timestamp">
<column name="add_date" length="19" default="0" />
</property>
<property name="status" type="string">
<column name="status" length="20" />
</property>
<list name="supplierPaidOnlines" table="supplier_paid_online" inverse="true" lazy="true" fetch="select" cascade="all" >
<key column="spd_id" />
<list-index column="id" />
<one-to-many class="iland.hbm.SupplierPaidOnline" />
</list>
<list name="supplierPaidCashes" table="supplier_paid_cash" inverse="true" lazy="true" fetch="select" cascade="all">
<key column="spd_id" />
<list-index column="id" />
<one-to-many class="iland.hbm.SupplierPaidCash" />
</list>
<list name="supplierPaidChecks" table="supplier_paid_check" inverse="true" lazy="true" fetch="select" cascade="all">
<key column="spd_id" />
<list-index column="id" />
<one-to-many class="iland.hbm.SupplierPaidCheck" />
</list>
</class>
</hibernate-mapping>
Exceptions :
SEVERE: Exception occurred during processing request: object references an unsaved transient instance - save the transient instance before flushing: iland.hbm.SupplierPaymentDetails
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: iland.hbm.SupplierPaymentDetails
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:243)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:456)
at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:121)
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2184)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2559)
at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2495)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2822)
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:113)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:185)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
at iland.payment.CashDao.update(CashDao.java:57)
at iland.payment.hbmCashAction.update(hbmCashAction.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:161)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:744)
How to resolve above exceptions?
解决方案
On update
hibernate requires all objects to be persistent, so you have to get
/load
SupplierPaymentDetails
from session and set to SupplierPaidDetails
. You can do this if you get the object by id which is available to the first entity. To get the second entity you need to write a method in DAO that has a parameter for id and return the entity object. You have to open a new session and transaction there if you are manages sessions and transactions manually.
这篇关于org.hibernate.TransientObjectException: 对象引用了一个未保存的瞬态实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文