我的应用程序使用 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) 我怎么能得到一个懒惰的对象?
例如,我有一个"客户"表和"请求"表,然后我使用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)