Java 当我试图从多通关系获取对象时,LazyLoadingException出现

Java 当我试图从多通关系获取对象时,LazyLoadingException出现,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,这是我的实体: @实体 公共类应答实现可序列化{ @manytone(fetch=FetchType.LAZY) @JoinColumn(name=“user”) 私有核心用户; @manytone(fetch=FetchType.LAZY) @JoinColumn(name=“person”) 私人; } 服务: @Transactional 公共类应答服务{ @自动连线 私人应答库; 公共列表getAnswers(长id){ 返回repository.findByMessagesidOr

这是我的实体:


@实体
公共类应答实现可序列化{
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“user”)
私有核心用户;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“person”)
私人;
}
服务:

@Transactional
公共类应答服务{
@自动连线
私人应答库;
公共列表getAnswers(长id){
返回repository.findByMessagesidOrderBySenddateDesc(id);
}
}
回购协议:

@存储库
公共接口应答库扩展了JpaRepository{
列表findByMessagesIdOrderBySenddateDesc(长id);
}
applicationContext.xml


我通过我的服务类在JSFbean中加载一个答案(列表)集合。当我尝试从集合中获取Person对象时(一切正常),但当我尝试从集合中获取User对象时,hibernate抛出LazyInitializationException。我做错了什么

hibernate试图从hibernate会话中获取用户对象,对吗

请随时询问任何其他信息

谢谢你的帮助

在创建线程之前,我在谷歌上搜索了很多次

UPD.
我将实体设置为急切加载,并注意到我的应用程序试图从用户表加载未列出的ID。这就是问题所在:)

您可以使用以下工具获取完整的对象树:

import org.springframework.transaction.annotation.Transactional;
@交易的
公共列表getAnswers(长id){
返回repository.findByMessagesidOrderBySenddateDesc(id);
}

我猜当您访问子对象时,它已从会话中分离,因此您无法访问它们。因为事务完成后,会话已关闭,因此您现在已分离对象,不会加载惰性对象,请检查有关stackoverflow的类似问题。使用Spring时,不要乱动
hibernate.current\u session\u context\u class
属性。删除它,因为它破坏了spring应用程序中正确的tx管理。@krishnathota我读了很多类似的线程,并尝试了许多建议,但不幸的是没有人能工作。好的,我知道子对象正在从会话中获取。那么,什么是可能的解决方案呢?我可以手动处理hibernate会话吗?@M.Deinum好的,删除它