Я использую Hibernate Envers 4.3.10.Final. У меня есть следующие два JPA-класса:
public class Factory {
private int factoryID;
....
}
public class Trgs{
private int trgsID;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="fk_factory")
private Factory factory;
}
Я написал метод, который повторно настраивает все объекты Audited Trgs.
Метод:
public List<Trgs> readAuditedTrgs (List<Integer> trgsIds) {
AuditReader reader = AuditReaderFactory.get(entityManager);
AuditQuery query = reader.createQuery().forRevisionsOfEntity(Trgs.class, true, true);
query.add(AuditEntity.id().in(ids));
query.add(AuditEntity.revisionType().eq(RevisionType.ADD));
query.addOrder(AuditEntity.revisionNumber().desc());
return query.getResultList() ;
}
После выполнения описанного выше метода мой результат — проверенный список операций. Каждый объект Trgs, конечно же, имеет правильный и проверенный объект Factory.
Но проблема в том, что я узнал, что Hibernate Envers всегда загружает Relation LAZY.
Так что в моем случае я должен перебирать список Trgs и инициализировать каждый объект Factory.
for (Trgs trgs : resultList) {
Hibernate.initialize(trgs.getFactory());
}
Итак, если бы у меня было, например, 300 объектов Trgs, мне нужно было бы инициализировать 300 объектов Factory. А это стоит оооочень дорого. Я должен подождать одну минуту.
Я узнал, что невозможно загрузить фабричный объект с нетерпением. Но мне нужно другое решение. Я показываю эти данные на сайте Dashboard (веб-проекте). Пользователь не может ждать одну минуту, пока данные загрузятся.
Пожалуйста, помогите мне решить эту проблему. Спасибо.