获取一堆GORM对象,其中每个对象的两个属性具有特定值

时间:2014-04-17 11:25:18

标签: grails gorm

我有一个带有一堆属性的GORM对象

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]
}

我是否可以匹配一对配对列表?

由于

2 个答案:

答案 0 :(得分:0)

我在想你应该建立一个动态标准。像这样:

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
}

以上内容将匹配任何域类与列表中的任何一对。为了匹配列表中的任何对,它必须是或者,并且属性也必须包含在和{}中,因此它们被匹配为一对而不是彼此独立。

答案 1 :(得分:0)

你在找这样的东西吗?...

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
            }
        }
    }
}