0

チャンピオンのように機能する次のSQLクエリがあります。

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に変換しようとしていますが、問題は、表示されるすべての例が非常に単純であり、結合をまったく処理しないことです。すべてのユーザーIDを取得する必要がありますが、クエリは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]
}
4

1 に答える 1

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])
于 2012-05-29T21:58:54.727 に答える