无法更新父表

时间:2015-01-20 17:51:58

标签: java hibernate spring-mvc

我正在开发一个Spring MVC应用程序,我正在创建一个包含路由停止对象列表的路由。以下是我的RouteModel类:

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="Route")
public class RouteModel {

    @Id
    @Column(name="routeid")
    @GeneratedValue
    private int routeId;

    @Column(name="routename")
    private String routeName;

    @Column(name="routedesc")
    private String routeDesc;

    @OneToMany(mappedBy = "routeModel")
    @Cascade({CascadeType.ALL})
    private List<RouteStopModel> routeStopList;
}

和RouteStopModel:

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="RouteStop")
public class RouteStopModel {
    @Id
    @Column(name="routestopid")
    @GeneratedValue 
    private int routeStopId;

    @Column(name="routestopname")
    private String routeStopName;

    @Column(name="routestopdesc")
    private String routeStopDescription;

    @ManyToOne
    @JoinColumn(name="routeid")
    private RouteModel routeModel;

    @Column(name="locationid")
    private int locationId;
}

设置后,路径停止列表,我用来保存路由模型和路由停止列表的dao代码:

session.persist(routeModel);

但我得到以下异常:

org.hibernate.PersistentObjectException: detached entity passed to persist: com.bizmerlin.scm.model.RouteModel

23:11:59,058 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:141)

23:11:59,058 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78)

23:11:59,074 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:772)

23:11:59,074 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:746)

23:11:59,089 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:750)

23:11:59,089 ERROR [stderr] (http--127.0.0.1-9090-4)    at com.bizmerlin.scm.dao.RouteDao.updateRoute(RouteDao.java:64)

23:11:59,089 ERROR [stderr] (http--127.0.0.1-9090-4)    at com.bizmerlin.scm.dao.RouteDao$$FastClassByCGLIB$$71cea667.invoke(<generated>)

23:11:59,105 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)

23:11:59,105 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:713)

23:11:59,121 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)

23:11:59,121 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)

23:11:59,136 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)

23:11:59,136 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)

23:11:59,152 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

23:11:59,152 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:646)

23:11:59,167 ERROR [stderr] (http--127.0.0.1-9090-4)    at com.bizmerlin.scm.dao.RouteDao$$EnhancerByCGLIB$$da879638.updateRoute(<generated>)

23:11:59,183 ERROR [stderr] (http--127.0.0.1-9090-4)    at com.bizmerlin.scm.services.RouteService.updateRoute(RouteService.java:40)

23:11:59,199 ERROR [stderr] (http--127.0.0.1-9090-4)    at com.bizmerlin.scm.controller.RouteController.editRoute(RouteController.java:115)

23:11:59,214 ERROR [stderr] (http--127.0.0.1-9090-4)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

23:11:59,214 ERROR [stderr] (http--127.0.0.1-9090-4)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

23:11:59,214 ERROR [stderr] (http--127.0.0.1-9090-4)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

23:11:59,230 ERROR [stderr] (http--127.0.0.1-9090-4)    at java.lang.reflect.Method.invoke(Method.java:606)

23:11:59,230 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214)

23:11:59,246 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)

23:11:59,261 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)

23:11:59,261 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748)

23:11:59,277 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)

23:11:59,277 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)

23:11:59,292 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)

23:11:59,292 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)

23:11:59,308 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)

23:11:59,308 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:833)

23:11:59,308 ERROR [stderr] (http--127.0.0.1-9090-4)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)

23:11:59,324 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)

23:11:59,324 ERROR [stderr] (http--127.0.0.1-9090-4)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)

23:11:59,339 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)

23:11:59,339 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)

23:11:59,355 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)

23:11:59,355 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)

23:11:59,371 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)

23:11:59,371 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)

23:11:59,386 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

23:11:59,386 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

23:11:59,402 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)

23:11:59,433 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)

23:11:59,464 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)

23:11:59,464 ERROR [stderr] (http--127.0.0.1-9090-4)    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)

23:11:59,480 ERROR [stderr] (http--127.0.0.1-9090-4)    at java.lang.Thread.run(Thread.java:744)

1 个答案:

答案 0 :(得分:0)

尝试在您的实体中放置CascadeType.ALL注释

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="routeid")
private RouteModel routeModel;