2012-07-26 60 views
1

有以下域模式:GORM條件查詢:發現孩子具有特殊性能的

class TransactionHeader { 
    static hasMany = [details: TransactionDetail] 
} 

class TransactionDetail { 
    static belongsTo = [header: TransactionHeader] 
    Product product 
} 

我想寫一個標準查詢,將返回包含有2個不同的產品TransactionDetails所有TransactionHeader行。這是我迄今爲止,並沒有做什麼,我以後:

def list = TransactionHeader.withCriteria { 
    details { 
     and { 
     eq("product", product1) 
     eq("product", product2) 
     } 
    } 
} 

發生了什麼事是它是含有至少1個詳細的產品1返回行。我需要有2個細節的行,每個行都有一個產品。

回答

1

感覺就像要移動的細節了這一點,所以實際上

def list = TransactionHeader.withCriteria { 
    and { 
     details { 
      eq("product", product1) 
     } 
     details { 
      eq("product", product2) 
     } 
    } 
} 

不知道如何休眠/格姆會處理這一點,雖然。

-1

您是否嘗試過在標準dsl中使用「in」語句?

def list = TransactionHeader.withCriteria { 
    and { 
     details { 
      'in'("product", [product1, product2]) 
     } 
    } 
} 
+1

在進程作爲OR不是我想要的。我已經接受了正確的答案。 – Gregg 2013-02-07 18:13:16

+0

明白了,抱歉,我沒有意識到和約束 – 2013-02-07 19:08:10