Hibernate LazyInitializationException

时间:2012-12-14 18:16:29

标签: java hibernate annotations

我正在为我的代码获得异常,这些代码工作正常。一个动作方法被调用但是,我在方法调用完成后才得到这个异常。

我尝试了网上提供的所有选项,但似乎没有什么能帮助我。

12/14 23:30:17 INFO  er.SessionDetectionInterceptor  - as dualauth is disabled. session interceptor doesnt validate
12/14 23:30:22 ERROR te.LazyInitializationException  - failed to lazily initialize a collection of role: com.apalya.model.User.broadband, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.apalya.model.User.broadband, no session or session was closed
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
    at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
    at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
    at org.hibernate.collection.PersistentSet.equals(PersistentSet.java:406)
    at java.util.Vector.indexOf(Vector.java:361)
    at java.util.Vector.contains(Vector.java:320)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:109)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:352)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:215)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:160)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:352)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:215)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:160)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:352)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:215)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:160)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:352)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:215)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:160)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:441)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:150)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:352)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:215)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:160)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:94)
    at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:115)
    at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:200)
    at org.apache.struts2.json.JSONResult.execute(JSONResult.java:172)
    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
    at com.apalya.filter.SessionDetectionInterceptor.intercept(SessionDetectionInterceptor.java:117)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.apalya.filter.UserDetectionInterceptor.intercept(UserDetectionInterceptor.java:53)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ParameterFilterInterceptor.intercept(ParameterFilterInterceptor.java:135)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.CreateSessionInterceptor.intercept(CreateSessionInterceptor.java:93)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.apalya.filter.XSSFilter.doFilter(XSSFilter.java:29)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:662)
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.apalya.model.User.broadband, no session or session was closed
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:230)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:160)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:94)
    at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:115)
    at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:200)
    at org.apache.struts2.json.JSONResult.execute(JSONResult.java:172)
    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
    at com.apalya.filter.SessionDetectionInterceptor.intercept(SessionDetectionInterceptor.java:117)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.apalya.filter.UserDetectionInterceptor.intercept(UserDetectionInterceptor.java:53)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ParameterFilterInterceptor.intercept(ParameterFilterInterceptor.java:135)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.CreateSessionInterceptor.intercept(CreateSessionInterceptor.java:93)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.apalya.filter.XSSFilter.doFilter(XSSFilter.java:29)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.apalya.model.User.broadband, no session or session was closed
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:230)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:160)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:441)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:150)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:352)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:215)
    ... 86 more
Caused by: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.apalya.model.User.broadband, no session or session was closed
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:230)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:160)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:352)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:215)
    ... 93 more
Caused by: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.apalya.model.User.broadband, no session or session was closed
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:230)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:160)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:352)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:215)
    ... 97 more
Caused by: org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.mypersonal.model.User.broadband, no session or session was closed
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:230)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:160)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:126)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:352)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:215)
    ... 101 more
Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.mypersonal.model.User.broadband, no session or session was closed
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
    at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
    at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
    at org.hibernate.collection.PersistentSet.equals(PersistentSet.java:406)
    at java.util.Vector.indexOf(Vector.java:361)
    at java.util.Vector.contains(Vector.java:320)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:109)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:352)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:215)
    ... 105 more

我的模特课

@Entity
@Table(name = "user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;
    private Long id;

    private Boolean approved;
    private Boolean subscribed;
    private Date createdOn;

    private Set<UserBroadband> broadband;
    private Set<UserBussinessModel> userBussinessModel;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }



    @Column(name = "approved")
    public void setApproved(Boolean approved) {
        this.approved = approved;
    }

    public Boolean getApproved() {
        return approved;
    }

    @Column(name = "createdOn")
    public void setCreatedOn(Date createdOn) {
        this.createdOn = createdOn;
    }

    public Date getCreatedOn() {
        return createdOn;
    }

    /*@OneToMany(targetEntity = com.apalya.model.UserBussinessModel.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "id")
    @JsonIgnore*/
    @OneToMany( fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "user"  )
    @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
    @Basic( optional = false )
    @Column( nullable = false  )
    public Set<UserBussinessModel> getUserBussinessModel() {
        return userBussinessModel;
    }

    public void setUserBussinessModel(Set<UserBussinessModel> userBussinessModel) {
        this.userBussinessModel = userBussinessModel;
    }

    @Column(name = "company")
    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    @Column(name = "status")
    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    @Column(name = "subscribed")
    public Boolean getSubscribed() {
        return subscribed;
    }

    public void setSubscribed(Boolean subscribed) {
        this.subscribed = subscribed;
    }

    @Column(name = "auto_provision")
    public Boolean getAutoProvision() {
        return autoProvision;
    }

    public void setAutoProvision(Boolean autoProvision) {
        this.autoProvision = autoProvision;
    }

    /**
     * @param fname the fname to set
     */
    public void setFname(String fname) {
        this.fname = fname;
    }

    /**
     * @return the fname
     */
    @Column(name = "first_name")
    public String getFname() {
        return fname;
    }

    /**
     * @param lname the lname to set
     */
    public void setLname(String lname) {
        this.lname = lname;
    }

    /**
     * @return the lname
     */
    @Column(name = "last_name")
    public String getLname() {
        return lname;
    }

    /**
     * @param lastLoggedOn the lastLoggedOn to set
     */
    public void setLastLoggedOn(Date lastLoggedOn) {
        this.lastLoggedOn = lastLoggedOn;
    }

    /**
     * @return the lastLoggedOn
     */
    public Date getLastLoggedOn() {
        return lastLoggedOn;
    }

    @Column(name = "from_date")
    public Date getFromDate() {
        return fromDate;
    }

    public void setFromDate(Date fromDate) {
        this.fromDate = fromDate;
    }
    @Column(name = "to_date")
    public Date getToDate() {
        return toDate;
    }

    public void setToDate(Date toDate) {
        this.toDate = toDate;
    }
    /*@OneToMany(targetEntity = com.apalya.model.UserBroadband.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "id")
    @JsonIgnore*/
    @OneToMany( fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "userId"  )
    @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
    @Basic( optional = false )
    @Column( nullable = false  )
    public Set<UserBroadband> getBroadband() {
        return broadband;
    }

    public void setBroadband(Set<UserBroadband> broadband) {
        this.broadband = broadband;
    }

}

5 个答案:

答案 0 :(得分:4)

当您在对象之间存在关系时会发生惰性初始化异常,例如,(一对多)客户端有很多汽车。 那么,发生的是,您进行查询,获取客户列表,然后关闭会话。在此之后,如果您尝试访问客户端对象内的汽车集合(未加载),您将获得异常。你没有发布你的代码......这会有所帮助。

编辑: 这正是你的例外所说的

  

未能懒惰地初始化角色集合:   com.mypersonal.model.User.broadband,没有关闭会话或会话

答案 1 :(得分:1)

您应该进行急切的提取

public Set<UserBroadband> getBroadband() @OneToMany( fetch = FetchType.EAGER

或在会话结束前进行JSON序列化。

在会话关闭后序列化实体对象时,无法在该对象中获取延迟集合。

答案 2 :(得分:1)

需要问的第一个问题是他们是否需要收藏品。如果他们需要收藏品,那么最好将其设置为EAGER加载。

如果在序列化过程发生之前不需要集合,请将所有集合设置为null。

我通过将所有集合设置为null来完成我的工作。

答案 3 :(得分:0)

您需要急切地在用户中加载“宽带”属性。应该很容易修复。默认情况下,Hibernate会懒惰地加载集合,你只需要在注释中添加fetch = FetchType.EAGER,或者在xml中做类似的事情。

另一种选择是在尚未与会话分离的情况下调用宽带属性。为此,您需要知道您的交易结束的时间,您的会话将关闭以执行此操作。然后Hibernate将填充该字段而不会抛出错误,因为它仍然可以访问数据库。

了解Hibernate出于性能原因这样做。如果您在一个查询中获取所有内容,则最终可能会获取整个数据库(披萨效果)。

答案 4 :(得分:0)

重复以下回答的问题:

您可以使用HibernateFullPlugin或使用拦截器实现的solution(与HibernateFullPlugin相同但更简单)。