2017-09-28 97 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()等。