在以下情况下,使用JPA存储库阻止无会话失败的方法是什么:
我有一个名为X的类,关系为@OneToMany
,fetch = FetchType.LAZY
为Y类。我在repostiory中创建整个方法,然后将其传递给Service类,之后我传递给它到控制器。
虽然我想通过x.getY()
通过Lazy
fetchType获取来自X类的对象Y,但我得到一个名为 no session 的错误(来自Hibernate)。< / p>
如何防止此错误发生?
答案 0 :(得分:1)
您必须将x.getY()
调用包含在@Transactional
方法中,或者将事务边界移到调用层次结构中更高的位置,以便包含调用。
一般情况下,我不会高于服务,所以如果你第一次在Controller中访问该属性,那么其他可能的选择是:
Hibernate.initialize(x.getY());
size
方法初始化它们x.getY().size
。