首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GORM createCriteria()“和”问题

GORM createCriteria()“和”问题
EN

Stack Overflow用户
提问于 2012-07-12 04:37:44
回答 1查看 424关注 0票数 0

2个域类,人员和属性

代码语言:javascript
复制
class Person {
static hasMany = [attributes : Attribute]    


}


class Attribute{
String key
String value
}

查询fname:

代码语言:javascript
复制
def c = Person.createCriteria()
def result = c.list{

attributes {
          eq("key", "fname")
          eq("value", "foo")
}   


println result
}

结果: foo foo,foo bar

查询lname:

代码语言:javascript
复制
def c = Person.createCriteria()
def result = c.list{

attributes {
          eq("key", "lname")
          eq("value", "bar")
}   


println result
}

结果: bar bar,foo bar

查询lname或fname:

代码语言:javascript
复制
def c = Person.createCriteria()
def result = c.list{
or{
attributes {
          eq("key", "fname")
          eq("value", "foo")
}

attributes {
          eq("key", "lname")
          eq("value", "bar")
}
}

println result
}

结果: foo foo,foo bar,bar bar

但如果我将OR更改为And,则不会得到任何结果:

代码语言:javascript
复制
def c = Person.createCriteria()
def result = c.list{
and{
attributes {
          eq("key", "fname")
          eq("value", "foo")
}

attributes {
          eq("key", "lname")
          eq("value", "bar")
}
}

println result
}

结果:[]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-12 05:39:27

我找到了一个解决这个问题的方法:

代码语言:javascript
复制
 def list1= Person.createCriteria().list { 
            attributes { 
                    eq("key", "fname") 
                    eq("value", "foo") 
            } 
        } 
def list2= Person.createCriteria().list { 
            attributes { 
                    eq("key", "lname") 
                    eq("value", "bar") 
            } 
        } 
        return list1.intersect(list2) 

Source

这个问题我就不回答了,希望有人能想出更好的办法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11441086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档