1

具有以下域模式:

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

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

我正在尝试编写一个条件查询,该查询将返回包含 TransactionDetails 和 2 个不同产品的所有 TransactionHeader 行。这就是我到目前为止所拥有的,它并没有完全符合我的要求:

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

发生的事情是返回的行至少包含 1 个产品的 1 个详细信息。我需要有 2 个详细信息的行,每个都有一个产品。

4

2 回答 2

2

感觉就像你想从中删除细节,所以实际上

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

不过,不确定 hibernate / gorm 将如何处理这个问题。

于 2012-07-26T17:55:59.227 回答
-1

您是否尝试过在您的标准 dsl 中使用“in”语句?

def list = TransactionHeader.withCriteria {
    and {
       details {
          'in'("product", [product1, product2])
       }
    }
}
于 2013-02-07T18:12:15.443 回答