org.hibernate.TransientObjectException: 对象引用了一个未保存的瞬态实例 [英] org.hibernate.TransientObjectException: object references an unsaved transient instance

查看:44
本文介绍了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屋!

查看全文
相关文章
Java开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆