Я уверен, что есть ряд причин, по которым то, над чем вы работаете, не спроектировано таким образом. Вероятно, есть больше причин, по которым вы не хотите его переделывать. Я понимаю, что это может вообще не ответить на ваш вопрос, но если бы я был вами, и у меня было бы время, у меня была бы склонность сделать что-то вроде этого:
public class Comment {
...
List<CommentReport> commentReports = new ArrayList<CommentReport>();
@OneToMany(mappedBy="comment")
public List<CommentReports> getCommentReports() {
return commentReports;
}
public void setCommentReports(List<CommentReport> commentReports) {
this.commentReports = commentReports;
}
@Transient
public int countReports() {
return commentReports.size();
}
То, что я предложил, предполагает, что вы работаете в веб-приложении и используете своего рода открытую сессию в поле зрения. В противном случае вам, вероятно, придется охотно получать эти комментарии, что может быть плохо.
Но, если вы собираетесь использовать Hibernate, почему бы не пойти немного дальше? Его цель - абстрагировать и скрыть код базы данных, и то, что я указал, является шагом в этом направлении.