如果列为空,是否可以在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
}
}
答案 0 :(得分:1)
如果你想要一个默认值来自数据库而不必在你的类中编写任何代码,我建议你更新它为null的每一行并在数据库中将它设置为0。如果从另一个应用程序插入数据并且该应用程序允许空值,则在数据库列上放置“DEFAULT 0”。
Grails还提供了一个“afterLoad”事件,该事件在从数据库加载域对象时运行。请参阅此处的文档:http://grails.org/doc/2.3.7/guide/GORM.html。
答案 1 :(得分:0)
我认为你可以用HQL做到这一点:
def salary = Employee.executeQuery('SELECT COALESCE(empsalary, 0.0) FROM Employee')[0]
请参阅this SO Question。
答案 2 :(得分:0)
请尝试在您的域对象中设置Float empsalary = 0.0
。