这可能很简单,我只是遗漏了一些东西,但我有两个班级
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 ... ")
但是,这也给我一个映射错误。
如何进行此类加入?
答案 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()
等等。