CriteriaDAO инициализирует отложенный сбор только тогда, когда @Transactional добавляется в методJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 CriteriaDAO инициализирует отложенный сбор только тогда, когда @Transactional добавляется в метод

Сообщение Anonymous »

Резюме
У меня есть метод, который использует объект Session для создания построителя критериев, а затем извлекает объект с именем Document (Document). Этот объект имеет два списка «один ко многим». Я хочу их инициализировать.
Даже когда сеанс открыт, он отказывается инициализировать два списка, выдавая сообщение «Сеанс не смог инициализировать прокси — нет сеанса» в строке: Hibernate.initialize(singleResult.getRevisoes());< /p>

Предлагаемое решение
Добавление @Transactional(Transactional.TxType.REQUIRED) в сигнатуру метода решает проблему. Однако открывает ли это новое соединение? Я трачу ресурсы? Есть ли лучший способ решить эту проблему?

Код: Выделить всё

@Autowired
protected Session session;

....

@Override
public Document find(Long id, boolean close) {
try {

CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();

CriteriaQuery queryDocument = criteriaBuilder.createQuery(Document.class);

Root rootDocument = queryDocument.from(Document.class);

queryDocument.select(rootDocument);
queryDocument.where(criteriaBuilder.equal(rootDocument.get("id"), id));

TypedQuery query = session.createQuery(queryDocument);

Document singleResult = query.getSingleResult();

System.out.println(session.isOpen()); //Returns true

//Initialize other lists (one to many)
Hibernate.initialize(singleResult.getRevisions());
Hibernate.initialize(singleResult.getFiles());

//
return singleResult;
} catch (Exception ex) {
throw ex;
} finally {
if (session != null && close) {
session.close();
}
}
}
Ссылки
https://codete.com/blog/spring-transact ... tion-modes
https://docs.spring.io/spring-framework ... ation.html

Подробнее здесь: https://stackoverflow.com/questions/781 ... dded-to-th
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»