2012-05-29 67 views
0

我有以下SQL查詢的作品就像一個冠軍:轉換從SQL到HQL

select u.id 
from morder_item mi 
join book b on b.id = ${book.id} 
join book_product bp on bp.book_id = b.id 
join morder mo on mo.id = mi.morder_id 
join user u on u.id = mo.user_id 
where mi.book_product_id = bp.id 

我試圖將其轉換爲HQL,但問題是,我看到的例子過於簡單,根本不處理連接。我需要獲取所有用戶標識,但查詢源自MOrderItem域。任何幫助表示讚賞。

更新:對於有人試圖幫助進行轉換的緣故:

class MOrder { 
    static hasMany = [items: MOrderItem] 
    static belongsTo = [user: User] 
} 

class MOrderItem { 
    BookProduct bookProduct 
    static belongsTo = [morder: MOrder] 
} 

class User { 
    static hasMany = [morders: MOrder] 
} 

class BookProduct { 
    static belongsTo = [book: Book] 
} 

回答

3

這似乎有些做作的數據進行工作:

def userIds = AnyDomainClass.executeQuery(''' 
    select u.id 
    from User u join u.morders mo 
       join mo.items mi 
    where mi.bookProduct.book=:book 
    ''', 
    [book: book]) 
+0

感謝伯特!真的很感謝幫助。 – Gregg