Допустим, у нас есть сущность "Вопрос" и "Ответ",
@Entity
public class Question extends IdEntity {
@Lob
private String content;
@Transient
private int answerTotal;
@OneToMany(fetch = FetchType.LAZY)
private List<Answer> answers = new ArrayList<Answer>();
......
Мне нужно указывать, сколько ответов на вопрос каждый раз, когда задается вопрос. Поэтому мне нужно сделать подсчет:
String count = "select count(o) from Answer o WHERE o.question=:q";
Мой вопрос: где лучшее место для подсчета? (Поскольку я выполнил большой запрос о сущности Вопрос, по дате, по тегу, по категории, по запросу и т. Д. Очевидно, что это не очень хорошее решение для добавления операции подсчета в каждый запрос.
Моя первая попытка - реализовать прослушиватель @PostLoad, поэтому каждый раз при загрузке объекта Question я считаю. Однако EntityManager не может быть внедрен в слушателя. Так что этот способ не работает.
Любой намек? (Я использую Hibernate в качестве провайдера).