grails - 获取行时验证失败

标签 grails grails-domain-class grails-validation

如果列为空,是否可以在grails中获取默认值?如果我要通过grails域对象表示以下查询,那么如何实现它:

SELECT IFNULL(empsalary,0.00) from Employee;

域对象:
class Employee{
   Integer id,
   Float empsalary

   static constraints = {
      id unique: true, blank:false
      empsalary nullable:true
   }
}

由于存在数据,不能将
  • 设置为可为空的empsalary为空
    empsalary上的
  • 验证程序似乎在插入行时有效,但在数据获取
  • 时无效
  • 我们可以考虑在域上编写诸如getEmpSalary()方法并在其中执行检查,但是我们还需要执行其他几个字段,因此尝试避免大量代码更改
  • 最佳答案

    如果您希望从数据库中获得一个默认值而不必在类中编写任何代码,则建议您更新它为null的每一行并将其在数据库中设置为0。如果要从另一个应用程序插入数据,并且该应用程序允许使用空值,则在数据库列上放置“DEFAULT 0”。

    Grails还提供了一个“afterLoad”事件,该事件在从数据库中加载域对象时运行。请参阅此处的文档:http://grails.org/doc/2.3.7/guide/GORM.html

    关于grails - 获取行时验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22545148/

    相关文章:

    域类的 Grails 自定义验证器

    json - 无法在Grails中映射JSON子实体

    grails - grails spring安全插件-为什么AjaxAwareAuthenticationSuccessHandler总是删除保存的请求?

    grails - 属于多个域

    unit-testing - 在 grails 中重写域属性的 setter 是否正确?

    grails - 日期范围验证groovy grails

    grails - 仅在gs​​p中显示第一个错误

    grails - 在Grails中用新版本替换全局库

    mysql - 如何使用mysql在g​​roovy中存储持续时间

    grails - 在运行时将 Gorm 切换到不同的数据源