我认为在EJB完成后会话关闭,因此对象处于 分离 状态。所以
Hibernate.initialize()不会再工作了。您在这里有多种选择:
- 在客户端(在您的JSF bean或servlet过滤器中)打开事务。这样,您通话时会话仍将打开
Hibernate.initialize()
。 - 修改您的EJB以加载完整的对象和所有必需的集合。您可以使用访
Hibernate.initialize()
存联接和/或在那里使用。 - 在EJB中创建更细粒度的API。方法类似
CompanyFacade.getAddressesByCompany()
。
我希望将后两者结合起来。使用访存联接在您的
find方法中加载一对一和多对一关系,并添加额外的方法来加载一对多集合(如地址)。由于它减少了数据库查询的次数,因此也将提高后端的性能。



