有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate连接查询

这可能非常简单,我只是缺少了一些东西,但我有两个类

Event {
  String codeword;
  int id;
}

Person {
   String codeword;
}

现在我想得到List<Int> idList,它包含所有的id's事件,其中event.codeword=person.codeword

在Hibernate中,我希望有一行:

List idList = session.createQuery("Select a.id From Event a Join Person b On a.codeword=b.codeword").list(). 

但是,我得到一个关联错误。我没有像IDList这样的对象来实际映射

所以,我试着做List eventList = ("Select a From Event a ... ")

但是,这也给了我一个映射错误

我该怎么做这样的加入


共 (1) 个答案

  1. # 1 楼答案

    解决这个问题的简单方法是使用getSession().createSQLQuery而不是使用getSession().createQuery(),因为createQuery与hibernate实体一起工作,需要正确映射

    但是

    建议您以更好的方式使用关系对象,并使用@OneToMany@ManyToOne@OneToOne来处理这些关联

    因此,您可以尝试这样定义实体:

    Event {
      @ManyToOne
      Person codeword;
      int id;
    }
    

    Person {
       String codeword;
    }
    

    之后取决于哪个HibernateAPI(标准、HQL、JPQL等)你用来获取数据, 您可以调用event.getPerson()等等