У меня возникает следующая проблема: когда я выбираю свой основной класс (Account
) в своем аутентификаторе, а затем внедряю его с аннотацией @Auth
, я не могу получить какие-либо лениво загруженные атрибуты с помощью hibernate, поскольку я получаю исключение, указывающее на отсутствие доступного сеанса.
@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, а не для спящего режима с отложенным доступом? И есть ли способ это исправить или это так, как задумано?