Grails findAll在“每个”闭包内返回空属性

时间:2018-08-29 03:37:25

标签: grails groovy

使用findAll获取不带LocationGeoPoint的内容列表。 我必须手动获取每个内容,因为内容(content.location)的属性在每个闭包内为空。这是因为findAll实际上并未从数据库中获取吗?

def contents = Content.findAllByLocationGeoPointIsNull()
def location
GeoPoint geoPoint
contents.each { Content content ->
    println content
    if(content.location == null) {
        content = Content.get(content.id)
    }
    location = content.location
    println content.location
    println location
    ...
    content.save()
}

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我可能误解了您的问题,但这是我的建议。您要求的所有LocationGeoPoint的值都为null,也许您应该尝试IsNotNull,您可以在http://gorm.grails.org/latest/hibernate/manual/index.html#finders上找到它,并在其中找到示例。

您可以尝试这样的事情

List<Content> contents = Content.findAllByLocationGeoPointIsNotNull()

contents.each { Content content ->
    // update logic goes here

    content.save()
}

我还建议您查看查询允许您在其中执行批处理更新和删除的位置。