【发布时间】:2023-03-31 11:28:01
【问题描述】:
用户实体类:
@Entity
public class User implements Serializable {
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
public List<Site> sites;
访问数据库的门面类:
@Stateless
public class UserFacade extends AbstractFacade<User, Long> {
@PersistenceContext
private EntityManager em;
...
}
用户注入的资源类:
@RequestScoped
public class Resource {
@Inject
UserFacade userFacade;
@Inject
HttpServletRequest request;
@Produces
public User getUser() {
final String name = request.getUserPrincipal().getName();
// ... find user in database ...
}
}
和泽西处理程序:
@Stateless
@Path("/sites")
public class Sites {
@EJB
SiteFacade siteFacade;
@Inject
User user;
...
现在问题来了:
当我想访问 user.sites 列表时,我遇到了延迟加载异常。但显然因为由 RequestScoped 提供者注入的用户,它应该使用相同的 EntityManager 会话刷新每个请求。对吧?
我是否将每个休息请求的用户实体注入休息处理程序类?
【问题讨论】:
-
向我们展示// ...在数据库中查找用户...代码