我正在开发一个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)
答案 0 :(得分:0)
尝试在您的实体中放置CascadeType.ALL注释
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="routeid")
private RouteModel routeModel;