2017-09-28 68 views
0

这可能是很简单,我只是失去了一些东西,但我有两个类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

从事件event中选择event.id,其中event.codeword = person.codeword –

回答

0

有使用getSession().createSQLQuery,而不是你已经习惯getSession().createQuery(),要解决这一点,因为createQuery工作与休眠的实体,需要正确映射的简单方法。

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

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

Event { 
    @ManyToOne 
    Person codeword; 
    int id; 
} 
,取决于其之后

Person { 
    String codeword; 
} 

休眠API(标准,HQL,JPQL ......),你用于获取数据, 你可以拨打event.getPerson()等。