小编Wee*_*zle的帖子

在createCriteria的域对象的集合属性上是否有"包含"功能?

我有一个Auction域对象和一个User域对象.拍卖hasMany用户.

我想做的,使用createCriteria,是这样的:

def c = Auction.createCriteria()
def l = c.list (max: maxVar, offset: offsetVar) {
    contains("users", thisUser)
}
Run Code Online (Sandbox Code Playgroud)

但是,contains不在可接受节点列表中:createCriteria描述页面.

有没有办法实现这个功能?

要明确的是,有没有办法让条件是指定的User对象包含在Auction的集合属性中?

grails createcriteria

10
推荐指数
1
解决办法
3269
查看次数

我应该何时在Grails中的域对象实例上调用save()?

根据我的阅读,save()通知持久化上下文应该保存或更新实例.但是,我在服务中有方法可以在不调用的情况下save()更改域实例的属性,并且更改会立即出现在我的数据库中,没问题.

save()方法是否是一种更安全的方式,可以在进行更改(并使用failOnError映射捕获错误)后知道域实例将被更新?是应该在每次更改域实例的属性时使用它还是过度使用它?

grails persistence

8
推荐指数
1
解决办法
1280
查看次数

动态地以干燥的方式在Grails中构建createCriteria?

我正在努力建立一个createCriteria动态的.到现在为止还挺好:

obj是我想要的域对象

rulesList是一个地图列表,其中包含要搜索的字段,要使用的运算符以及要搜索的值

def c = obj.createCriteria()
l = c.list (max: irows, offset: offset) {
    switch(obj){           //constrain results to those relevant to the user
        case Vehicle:
            eq("garage", usersGarage)
            break
        case Garage:
            users {
                idEq(user.id)
            }
            break
    }
    rulesList.each { rule ->
        switch(rule['op']){
            case 'eq':
                eq("${rule['field']}", rule['value'])
                break
            case 'ne':
                ne("${rule['field']}", rule['value'])
                break
            case 'gt':
                gt("${rule['field']}", rule['value'])
                break;
            case 'ge':
                ge("${rule['field']}", rule['value'])
                break
            case 'lt':
                lt("${rule['field']}", rule['value'])
                break
            case 'le':
                le("${rule['field']}", rule['value'])
                break
            case 'bw':
                ilike("${rule['field']}", "${rule['value']}%") …
Run Code Online (Sandbox Code Playgroud)

grails groovy createcriteria

6
推荐指数
1
解决办法
4412
查看次数

在Derby DB中LONG VARCHAR而不是VARCHAR的实际用途是什么?

我正在查看derby文档,发现LONG VARCHAR的描述是:

LONG VARCHAR类型允许存储最大长度为32,700个字符的字符串.它与VARCHAR相同,只是在创建此类型的列时无法指定最大长度.

我的问题是,这什么时候有用?在什么情况下我宁愿拥有一个我无法指定的最大长度的VARCHAR?

derby

4
推荐指数
1
解决办法
4873
查看次数

Grails - 更改复选框的参数映射值?

有没有办法可以从复选框中更改param映射中的值?我注意到,如果选中复选框,带有复选框的元素将在param映射中具有值"on",或者在元素名称前面有下划线作为param映射中的值,其值为""如果未选中该复选框.有没有什么办法可以改变这种行为,以便在检查时,如果选中了值为"true"并且值为"false"(最好在元素名称前面没有'_') ?

grails

3
推荐指数
1
解决办法
3899
查看次数

Grails 数据库迁移插件默默地无法添加非空约束

我正在尝试使用此站点作为参考来熟悉Grails 数据库迁移插件。我在尝试添加具有非空约束的属性时遇到问题。我按照网站上显示的方式对我的脚本进行建模(添加列,为现有记录设置默认值,然后向列添加不可为空的约束):

databaseChangeLog = {
    changeSet(author: "Ryan (generated)", id: "1340893788251-1") {
        addColumn(tableName: "game") {
            column(name: "genre", type: "varchar(255)")
        }

        grailsChange{
            change{
                sql.executeUpdate("UPDATE game SET genre = 'Other'")
            }
        }

        addNotNullConstraint(tableName: "game", columnName: "genre")
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试更新我的数据库时,它默默地失败了。因此,我将三个更改拆分为三个不同的 groovy 脚本来追踪问题。

第一个文件(添加列)工作正常:

databaseChangeLog = {
    changeSet(author: "Ryan (generated)", id: "1340893788251-1") {
        addColumn(tableName: "game") {
            column(name: "genre", type: "varchar(255)")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个文件(为现有记录分配默认值)工作正常:

databaseChangeLog = {
    changeSet(author: "Ryan (generated)", id: "defaultValue") {
        grailsChange{
            change{
                sql.executeUpdate("UPDATE game SET genre = 'Other'") …
Run Code Online (Sandbox Code Playgroud)

grails database-migration grails-plugin

3
推荐指数
1
解决办法
2619
查看次数