Grails 获取一组GORM对象,其中每个对象的两个属性具有特定值
我有一个GORM对象,它有很多属性Grails 获取一组GORM对象,其中每个对象的两个属性具有特定值,grails,gorm,Grails,Gorm,我有一个GORM对象,它有很多属性 MyGormObject { String prop1; String prop2; String prop3; ... } 我有一个映射列表,其中每个映射都有一个特定的prop1和prop2值。 我想找到所有具有与prop1、prop2映射对匹配的prop1和prop2的MyGormObjects 如果它只是一对,我会尽力匹配我能做到的: static MyGormObject get(String prop1, long
MyGormObject {
String prop1;
String prop2;
String prop3;
...
}
我有一个映射列表,其中每个映射都有一个特定的prop1和prop2值。
我想找到所有具有与prop1、prop2映射对匹配的prop1和prop2的MyGormObjects
如果它只是一对,我会尽力匹配我能做到的:
static MyGormObject get(String prop1, long prop2) {
find 'from MyGormObject where prop1=:prop1 and prop2=:prop2',
[prop1: prop1, prop2: prop2]
}
你知道我怎样才能配得上一对吗
谢谢我想你应该建立一个动态的标准。大概是这样的:
def m =[
[key1: 'value1a', key2: 'value2a'],
[key1: 'value1b', key2: 'value2b']
]
def results = MyDomain.withCriteria { m ->
or {
m.each { v ->
and {
eq('key1', v.key1)
eq('key2', v.key2)
} // match the pair of values
}
} // match any of the pairs
}
以上内容将使任何域类与列表中的任一对匹配。为了匹配列表中的任何对,它必须是or,而且属性也必须包装在and{}中,以便它们作为一对匹配,而不是相互独立 你在找这样的东西吗
def listOfMaps = ...
def results = MyDomain.withCriteria {
or {
listOfMaps.each { map ->
// if you need to impose a check here
// to make sure the keys exist, do that.
// this code assumes they exist...
def key1 = map.key1
def key2 = map.key2
and {
eq 'key1', key1
eq 'key2', key2
}
}
}
}
我没有正确地阅读问题,我认为你是对的,抱歉,别担心。我只是担心我完全错过了什么。谢谢你的帮助。(:我认为这行不通。看起来您希望映射(m)作为参数传递给withCriteria闭包。我指的是建议的解决方案中的“MyDomain.withCriteria{m->”。它实际上是一个映射列表。