Dropwizard休眠会话感知的延迟加载

时间:2018-11-08 08:26:58

标签: java hibernate dropwizard

我遇到以下问题:当我在身份验证器中获取主体类(Account),然后向其注入@Auth批注时,我无法使用休眠方式获取任何延迟加载的属性,我收到异常消息,表明没有可用的会话。

@UnitOfWork
@PermitAll
@GET
public Response fetchCharacters(@Auth Account account) {
    List<Character> chars = account.getCharacters();
    return Response.status(Status.OK).entity(chars).build();
}

如果我使用额外的DAO类,则效果很好

@UnitOfWork
@PermitAll
@GET
public Response fetchCharacters(@Auth Account account) {
    List<Character> chars = dao.getCharacters(account);
    return Response.status(Status.OK).entity(chars).build();
}

虽然我可以做到这一点,因为它只是一个很小的缺点,但我想知道为什么这没有按我期望的那样工作。 我知道在获取身份验证器中的主体后,该会话显然已关闭,但是为什么要为DAO打开一个新的会话,而不为休眠的懒惰获取打开一个新会话?有没有办法解决这个问题,或者是否如预期的那样?

0 个答案:

没有答案