简体   繁体   中英

CreateCriteria grails

I am trying to use the create criteria method in grails but im getting back an empty list im not sure why. My code is as follow

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

PostOrder domain is as follows:

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

Post is as follows:

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

finally picture is as follows:

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

To me this would work perfectly fine, can anyone see why is doesn't?

Does it have the same username in both pictures and posts??? If not, you have to surround them with and or{} because by default it is used the and logical

Maybe you should add a logical block (and/or) like this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM