Hibernate JOIN查询

时间:2017-09-28 23:20:40

标签: 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这样的Object实际映射到。

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

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

如何进行此类加入?

1 个答案:

答案 0 :(得分:0)

有一种简单的方法可以使用getSession().createSQLQuery而不是getSession().createQuery()来解决此问题,因为createQuery适用于hibernate实体,需要正确映射。

BUT

建议您更好地使用关系对象,并使用@OneToMany@ManyToOne@OneToOne来处理这些关联。

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

Event {
  @ManyToOne
  Person codeword;
  int id;
}

Person {
   String codeword;
}

之后取决于您用于获取数据的hibernate API(Criteria,HQL,JPQL,...), 你可以拨打event.getPerson()等等。