无法初始化代理 - 再次没有会话

Posted

技术标签:

【中文标题】无法初始化代理 - 再次没有会话【英文标题】:Could not initialize proxy - No Session again 【发布时间】:2011-01-29 00:11:18 【问题描述】:

查看页面时收到这些错误日志

错误 [TP-Processor11] (LazyInitializationException.java:42) - 无法初始化代理 - 没有会话 org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话 在 org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:132) 在 org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:174) 在 org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190) 在 org.osmoz.contents.model.enm.ContentType_$$_javassist_71.getDefaultShortMode(ContentType_$$_javassist_71.java) 在 org.osmoz.contents.web.tapestry.components.EnmContentZone.getTemplate(EnmContentZone.java:67) 在 org.osmoz.contents.web.tapestry.base.AbstractRawContentZone.getContent(AbstractRawContentZone.java:67) 在 $PropertyConduit_1276091af82.get($PropertyConduit_1276091af82.java) 在 org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:58) 在 org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl$1.read(InternalComponentResourcesImpl.java:510) 在 org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl$1.read(InternalComponentResourcesImpl.java:496) 在 org.apache.tapestry5.corelib.components.OutputRaw._$read_parameter_value(OutputRaw.java) 在 org.apache.tapestry5.corelib.components.OutputRaw.beginRender(OutputRaw.java:43) 在 org.apache.tapestry5.corelib.components.OutputRaw.beginRender(OutputRaw.java) 在

我知道问题是会话已关闭。但是我真的不知道为什么这个错误发生的频率不高以至于我不知道根本原因是什么。

环境:

Tapestry5、JPA、Hibernate 3.3.2.GA

我已经设置了

<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>

在 web.xml 中 还有

【问题讨论】:

你看到了吗 - ***.com/questions/345705/… 给出web.xml的所有相关部分,不仅仅是这一行。 案例就是这么简单。我们想要获得一个“惰性”字段并将其显示在视图中。在这种情况下,我们有对象 ContentType 和字段“defaultShortMode”。由于我们在视图中调用惰性,我们使用 OpenEntityManagerInViewFilter 打开另一个会话。主要问题是:这个错误有时会发生。有时它运行平稳。我猜想涉及的其他因素,例如 Tapestry 线程?,使用事务?使用休眠二级缓存?这将帮助某人指出这里可能出现的问题。谢谢。 是的,我读到了为什么我的标题又是 No Session。我知道这个问题有很多原因。在您的链接中,原因是使用事务。我猜想涉及的其他因素,例如 Tapestry 线程?,使用事务?使用休眠二级缓存?但我不知道如何在什么级别更改交易?挂毯或弹簧(我正在使用弹簧服务)。我仍在调查,希望有人可以帮助我。问候 【参考方案1】:

在使用@Service(Spring 服务)注释的层中的方法上使用@Transactional

【讨论】:

不是@Transaction,是@Transactional (org.springframework.transaction.annotation.Transactional) @Abdull 我正在使用org.springframework.transaction.annotation.Transactional,但仍然出现错误。这是我的问题***.com/questions/27900865/…

以上是关于无法初始化代理 - 再次没有会话的主要内容,如果未能解决你的问题,请参考以下文章

org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话 -

Grails GORM:无法初始化代理 - 没有会话

Hibernate 无法懒惰地初始化角色集合 无法初始化代理 - 没有会话

NHibernate.LazyInitializationException: Initializing[] - 无法初始化代理 - 没有会话

LazyInitializationException:无法初始化代理 - 没有会话

JsonMappingException:无法初始化代理 - 没有会话