【问题标题】:CreateCriteria grailsCreateCriteria grails
【发布时间】:2013-04-09 10:06:13
【问题描述】:

我正在尝试在 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
    }
}

对我来说,这会很好用,任何人都知道为什么不可以吗?

【问题讨论】:

  • 你想找什么?尝试删除帖子或图片并查看结果。
  • 我想获取帖子中的作者等于当前用户以及图片中的用户等于当前用户的所有 PostOrder 实例
  • 确保您的帖子中有图片。启用休眠 sql 输出也很好,然后您可以看到 GORM 正在运行的查询。这可以通过在dataSource{} 块中添加logSql=trueDataSource.groovy 中完成。
  • 你得到一个空列表 - 你确定那个答案是错误的吗?即您是在单元/集成测试中还是针对真实数据库运行此查询?您是否有与您正在运行的查询实际匹配的数据?

标签: grails


【解决方案1】:

图片和帖子中的用户名是否相同??? 如果不是,则必须用 and or{} 将它们括起来,因为默认情况下它使用 and 逻辑

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多