这是<div id=container>
<img id=thepic src="http://i.imgur.com/s9J4MnI.jpg">
<div id=color_layer></div>
<span id=content><img id=letter src="http://i.imgur.com/CB1vUqy.png" alt=img><h1> 書面</h1></span>
</div>
asset.groovy
如果值公式得到的值是-ve,我需要将Value声明为0。 我该怎么做,是在控制器还是域中?
我在Controller
中尝试了这个static mapping = {
yearNow formula: 'YEAR(purchase_date)'
yearlyValue formula: 'PURCHASE_AMOUNT / LIFE_EXPECTANCY'
value formula: 'PURCHASE_AMOUNT / LIFE_EXPECTANCY * (LIFE_EXPECTANCY - (YEAR(NOW()) - YEAR(purchase_date)))'
}
答案 0 :(得分:1)
嘛!现在我无法尝试我给你的建议但是在grails docs中很好地说公式使用持久性模型而不是对象模型,因此它也允许添加hql查询。
因此,您可以尝试使用hql查询CASE
语句。
This blog很好地展示了使用hql的例子。
以下内容适用于您的情况:
static mapping = {
yearNow formula: 'YEAR(purchase_date)'
yearlyValue formula: 'PURCHASE_AMOUNT / LIFE_EXPECTANCY'
value formula: 'CASE WHEN PURCHASE_AMOUNT / LIFE_EXPECTANCY * (LIFE_EXPECTANCY - (YEAR(NOW()) - YEAR(purchase_date))) <0 THEN PURCHASE_AMOUNT / LIFE_EXPECTANCY * (LIFE_EXPECTANCY - (YEAR(NOW()) - YEAR(purchase_date))) ELSE 0'
另外,如果您不想对公式使用查找程序或条件查询,则另一个解决方案是为瞬态属性创建自定义getter方法,并获得如下所示的预期值:
public double getValue(){
double value = 0.0d //calculate value here
return (value <0 ? 0 : value)
}
希望它有所帮助!!
答案 1 :(得分:1)
只需覆盖域内value
的getter方法,即可检查-ve值。
public double getValue(){
value < 0 ? 0 : value
}
答案 2 :(得分:1)
感谢您的帮助,答案是
value formula: 'GREATEST(PURCHASE_AMOUNT / LIFE_EXPECTANCY * (LIFE_EXPECTANCY - (YEAR(NOW()) - YEAR(purchase_date))), 0)'