将生成的数据库列映射到Grails域类属性

时间:2017-07-04 09:40:36

标签: grails gorm

在我的Grails 2.5.X应用程序中,我有一个如下所示的域类:

class FormData {

    String submittedFields
    Boolean submitted

    static constraints = {
        submittedFields nullable: true
    }

    static mapping = {        
        // can I do something here to map submitted to a generated
        // column of the form_data table
    }
}

我想将submitted属性映射到form_data表的生成列,即由SQL语句创建的列

alter table form_data add submitted tinyint 
GENERATED ALWAYS AS (if(submitted_fields is null,0,1));

具体而言,当我从域模型创建架构时,应该创建此生成的列,例如,通过运行schema-export脚本。

submitted映射到生成列的结果是相应的域类属性应该是只读的,或者至少为它赋值应该没有效果。

1 个答案:

答案 0 :(得分:1)

如果你只想在数据库端处理列的值,并且不希望从grails / hibernate端插入或更新它。您可以将列设置为可插入:false updatetable:false

static mapping = {
 submitted insertable:false, updateable:false
}

现在,即使在grails中更改了值,也不会在数据库中更新新值。