首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取行时的grails验证

问获取行时的grails验证
EN

Stack Overflow用户
提问于 2014-03-20 21:09:27
回答 3查看 284关注 0票数 1

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

代码语言:javascript
复制
SELECT IFNULL(empsalary,0.00) from Employee;

域对象:

代码语言:javascript
复制
class Employee{
   Integer id,
   Float empsalary

   static constraints = {
      id unique: true, blank:false
      empsalary nullable:true
   }
}
  • 由于现有数据,使空薪可空为false不是一个选项
  • 当插入行时,空薪水上的验证器似乎可以工作,但在数据获取时却不能工作。
  • 我们可以考虑在域上编写例如getEmpSalary()方法,并在那里执行检查,但是还有其他几个字段我们需要这样做,这样才能避免大量的代码更改
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-21 12:04:22

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

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

票数 1
EN

Stack Overflow用户

发布于 2014-03-20 21:22:20

我想你可以用HQL做这件事:

代码语言:javascript
复制
def salary = Employee.executeQuery('SELECT COALESCE(empsalary, 0.0) FROM Employee')[0]

见this SO Question。

票数 0
EN

Stack Overflow用户

发布于 2014-03-21 13:39:06

请尝试在域对象中设置Float empsalary = 0.0。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22545148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档