EJBTransactionRolledBackException - Огромный объем данных - TypedQuery - PullRequest
0 голосов
/ 09 января 2019

У меня есть функция, которая выглядит так:

@PersistenceContext(unitName="persistence-unit")
private EntityManager em;

@Override
public List<Person> (Integer startPosition, Integer maxResult)
{

TypedQuery<Person> findAllQuery = em.createQuery("SELECT DISTINT p FROM Person p LEFT JOIN FETCH p.cityByCity LEFT JOIN FETCH p.userByUser ORDER BY p.id", Person.class);

if(startPosition != null){
findAllQuery.setFirstResult(startPosition);
]
if(maxResult!=null){
findAllQuery.setMaxResults(maxResult);
}
return findAllQuery.getResultList

}

У меня есть объекты персонажа, города и пользователя.

Когда я пытаюсь привести, скажем, 50 тысяч человек, все работает хорошо. Но если я попробую 150 тыс. Человек, он просто не завершится и выдаст EJBTransactionRolledBackException: транзакция откатывается. Я даю стартовую позицию как 0 и 5 как максимальный результат, поэтому он должен привести первых 5 человек, но это не заканчивается и дает исключение.

Я полагаю, что причиной проблемы является TypedQuery, приносящий все результаты и затем пытающийся получить первые 5. Но с другой стороны, я не уверен, что TypedQuery работает так. Если он работает так, ему действительно нужно обновление: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...