【发布时间】:2011-01-22 13:07:24
【问题描述】:
在使用 JAX-WS @Path 和 @Stateless(或 @RequestScoped)注释时,我得到了一个 LIE。代码:
@Path("/users")
@Stateless
@Produces(MediaType.APPLICATION_XML)
public class UserResourceRESTService {
@Inject
@UserRepository
@PersistenceContext
private EntityManager em;
@GET
@Path("/{id:[1-9][0-9]*}")
public User lookupUserById(@PathParam("id") long id) {
return em.find(User.class, id);
}
}
我得到的实际异常:
org.hibernate.LazyInitializationException: 无法初始化代理 - 没有会话
用户对象有一个地址,它有一个国家。如果我将其更改为有状态 bean 并使用扩展上下文它可以工作,但这真的不应该是 SFSB 吗?我有点茫然,为什么“em”在使用无状态 bean 时无法打开会话?
【问题讨论】:
-
在 NullPointerException 之后,这是 java 世界中最常见的异常。您在 google 和 stackoverflow 上的搜索告诉了您什么?
标签: java hibernate transactions lazy-loading java-ee-6