相关疑难解决方法(0)

在 JUnit/JPA/Hibernate/Struts 和 Spring 集成测试中保持会话打开 - 无会话或会话关闭 - LazyInitialization 异常

我的应用程序使用 Struts2(mvc)、Spring(依赖注入)、带有 Hibernate 的 JPA、JUnit 以及 struts2-junit 插件和 struts2 spring 插件。

这是我的测试课:

@RunWith(SpringJUnit4ClassRunner.class)
public class CustomerSearchIntegrationTest extends StrutsSpringTestCase {

    @Test
    @Transactional
    public void testGetActionProxy() throws Exception {

        ActionProxy proxy;
        String result;

        ActionMapping mapping = getActionMapping("userInfo");
        assertNotNull(mapping);

        ..... // Some JUnit init code..

        ActionProxy proxy = getActionProxy("userInfo");
        UserInfo user = (UserInfo) proxy.getAction();
        result = proxy.execute();

        assertEquals("details", result);
        System.out.prinltn("Username:" + user.getFirstName());

    }
}
Run Code Online (Sandbox Code Playgroud)

获取用户信息

public class UserInfo extends ActionSupport {
     User user; // Entity
     UDetails details; // Entity

     public String getUserDetails() { …
Run Code Online (Sandbox Code Playgroud)

java junit spring jpa struts2

5
推荐指数
1
解决办法
3213
查看次数

使用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)

hibernate jpa

3
推荐指数
1
解决办法
8376
查看次数

标签 统计

jpa ×2

hibernate ×1

java ×1

junit ×1

spring ×1

struts2 ×1