Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对四个表的Hibernate查询_Java_Hibernate - Fatal编程技术网

Java 对四个表的Hibernate查询

Java 对四个表的Hibernate查询,java,hibernate,Java,Hibernate,我有三张桌子 问题(forumId为FK) 回答(问题ID为FK) 论坛 论坛成员(forumId作为FK) 可以有多个论坛,所以我想添加一个方法,返回给定论坛中某个成员的所有答案 我不知道我能做什么hibernate查询。 为了将答案列表绑定到给定的成员,我执行以下操作 return HibernateUtil.query(Answer.class,"authorId",member.getId()); 如何才能从给定论坛的成员那里获得答案列表。您对表格考虑得太多,而对对象考虑得不够。H

我有三张桌子

  • 问题(forumId为FK)
  • 回答(问题ID为FK)
  • 论坛
  • 论坛成员(forumId作为FK)
可以有多个论坛,所以我想添加一个方法,返回给定论坛中某个成员的所有答案

我不知道我能做什么hibernate查询。 为了将答案列表绑定到给定的成员,我执行以下操作

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

如何才能从给定论坛的成员那里获得答案列表。

您对表格考虑得太多,而对对象考虑得不够。Hibernate是一个对象关系映射工具

我在这里看到四个物体:

  • 问题,;有一系列答案
  • 答复
  • 论坛;有问题和成员的集合
  • 成员;有问题和答案的集合
  • 其他关系取决于关系是单向的还是双向的

    从对象的角度开始思考,Hibernate会容易得多

    如果您没有或想要对象,请不要使用Hibernate。只需直接使用JDBC,进行连接,然后将结果映射到对象或数据结构中即可。

    使用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();
    }
    
    公开列表getMemberAnswers(论坛、会员){
    返回getSession().createQuery(
    “从论坛f中选择f答案”+
    “加入f.m成员”+
    “其中f.id=:forumId”+
    “和m.id=:memberId”)
    .setInteger(“forumId”,forum.getId())
    .setInteger(“memberId”,member.getId())
    .list();
    }