CreateCriteria grails

时间:2013-04-09 10:06:13

标签: grails

我正在尝试在grails中使用创建条件方法,但我回到一个空列表我不知道为什么。 我的代码如下

    def results = PostOrder.createCriteria().list() {
        posts{
            author{
                eq('username', lookupPerson().username)
            }
        }
        picture{
            user{
                eq('username', lookupPerson().username)
            }
        }
    }

PostOrder域名如下:

class PostOrder {

    String pOrder
    Date dateCreated
    Picture picture
    Post posts
    Video video
    Boolean favorite = false

    static hasMany = [children : Child]

    static constraints = {
        picture nullable: true
        posts nullable: true
        video nullable:  true
    }
}

发布如下:

 class Post {

    String message
    User author
    Date dateCreated
    Child child
    boolean postedToAll
    String tag

static hasMany = [tags:Tag]

    static constraints = {
        child nullable: true
        tags nullable: true
        tag nullable: true
     }
}

最后图片如下:

 class Picture {

    String orgName
    String urlOrg
    String urlWeb
    String urlThumb
    Date   dateCreated
    String caption
    Child child
    User user
    Album contained
    String tag
    boolean postedToAll

    static hasMany = [tags:Tag]

    static constraints = {
        orgName blank: false
        caption maxSize: 500
        tags nullable:  true
        caption nullable: true
        tag nullable: true
        child nullable:  true
    }
}

对我来说,这样可以完全正常,任何人都可以看到为什么不这样做?

2 个答案:

答案 0 :(得分:0)

在图片和帖子中是否有相同的用户名? 如果没有,你必须用和/或{}包围它们,因为默认情况下它使用和逻辑

答案 1 :(得分:0)

也许你应该像这样添加一个逻辑块(和/或):

def results = PostOrder.createCriteria().list() {
    or {
        posts{
            author{
                eq('username', lookupPerson().username)
            }
        }
        picture{
            user{
                eq('username', lookupPerson().username)
            }
        }
    }
}