四个表上的Hibernate查询

时间:2010-06-03 12:29:31

标签: java hibernate

我有三张桌子。

  • 问题(forumId as FK)
  • 回答(questionId as FK)
  • 论坛
  • 论坛成员(forumId as FK)

可以有多个论坛,所以我想添加一个方法,从给定论坛中的成员返回我的所有答案。

我不知道我能做什么的hibernate查询。 要获取绑定到给定成员的答案列表,请执行此操作

return HibernateUtil.query(Answer.class,"authorId",member.getId());

如何从特定论坛的成员那里获得答案清单。

2 个答案:

答案 0 :(得分:1)

你对表格的考虑太多而对对象的考虑不够。 Hibernate是一种对象关系映射工具。

我在这里看到四个对象:

  1. 问题;有一个答案集
  2. 答案
  3. 论坛;有问题和成员的集合
  4. 会员;有问题和答案的集合
  5. 其他关系取决于关系是单向还是双向。

    开始考虑对象和Hibernate会更容易。

    如果您没有或不想要对象,请不要使用Hibernate。在这种情况下,只需直接使用JDBC,执行JOIN,并将结果映射到对象或数据结构中。

答案 1 :(得分:0)

使用HQL:

public List<Answer> getMemberAnswers(Forum forum, Member member) {
  return getSession().createQuery(
    "select f.answers from Forum f " +
    "join f.member m " +
    "where f.id = :forumId " +
    "and m.id = :memberId")
  .setInteger("forumId", forum.getId())
  .setInteger("memberId", member.getId())
  .list();
}