使用hibernate和JPA获取惰性对象

Sil*_*oia 3 hibernate jpa

我怎么能得到一个懒惰的对象?

例如,我有一个"客户"表和"请求"表,然后我使用hibernate和JPA构建一个项目.

在客户表中有一个像这样的代码

@OneToMany(cascade = CascadeType.ALL, fetch =FetchType.LAZY , mappedBy = "customer")
public Set<Request> getRequests() {
    return this.requests;
}
Run Code Online (Sandbox Code Playgroud)

所以,如果从客户对象调用getRequests()方法,它返回一个空对象,因为它是懒惰的.

如何在不使用EAGER注释的情况下获取完整的惰性对象?

我已经看到我的问题取决于会话,因为它很接近.因此,在服务器端,我需要通过JPA保持开放会话.我该怎么做?

这是我的applicationContext.xml的一部分,但它不起作用:

<bean class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" id="entityManagerFactory">
       <property name="persistenceUnitName" value="gestazPU"/>
   </bean>

   <bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
       <property name="entityManagerFactory" ref="entityManagerFactory"/>
   </bean>

   <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

   <bean id="ebOpenEMinView" class="org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor">
       <property name="entityManagerFactory" ref="entityManagerFactory"/>
   </bean>

   <tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager"/>

   <bean id="TipoTicketDAO" class="it.stasbranger.gestaz.server.dao.impl.TipoTicketDAOImpl">
       <property name="entityManagerFactory" ref="entityManagerFactory" />
   </bean>
Run Code Online (Sandbox Code Playgroud)

Boz*_*zho 5

使用Hibernate.initialize(lazyCollection)- 如果当前会话处于活动状态,则将初始化集合.