2014-07-23 189 views
0

請幫助解決這個問題..
我需要算多少的規則是有關聯到GROUP_ID。在這我需要規則的ID = 1
規則是休眠映射表。
組是休眠映射表。
ALERT_RULE_GROUP是一對多的JoinTable。
轉換Oracle查詢到Hibernate查詢

查詢這是給我正確的結果:

select rule_id from ALERT_RULE_GROUP where rule_id in(select rule_id from ALERT_RULE_GROUP where GROUP_ID=850) group by rule_id having count(*)=1; 

我沒有得到ALERT_RULE_GROUP沒有映射..
請幫我將其轉換爲HQL ..

+0

我覺得休眠沒有做,你可能需要一個聯合子。 – Mihai

回答

0

你會需要映射ALERT_RULE_GROUP在Hibernate中表示的關係,然後才能繼續。這就是Hibernate試圖告訴你的。

要做到這一點,請添加一個ManyToMany或OneToMany,或者它在Role和Group之間,並使用@JoinTable(name = ALERT_RULE_GROUP)批註指定連接表名稱。

+0

@OneToMany(取= FetchType.EAGER) \t @JoinTable(名稱= 「ALERT_RULE_GROUP」,joinColumns = {@ JoinColumn(名稱= 「RULE_ID」)},inverseJoinColumns = {@ JoinColumn(名稱= 「GROUP_ID」)}) \t private Set groups = new HashSet (); – Yogeendra

+0

它在Rule.java – Yogeendra

+0

Aha中提及。你已經映射了它。對於那個很抱歉。沒有試過直接查詢連接表。如何在另一個實體中再次映射表:「AlertRuleGroup」。您可以在那裏將id映射爲整數並執行查詢。如果你不喜歡這種情況,查詢連接表是不可能的,爲什麼不堅持使用SQL呢? –