在域类中声明布尔值,但不出现在数据库中

时间:2019-03-18 14:24:10

标签: grails

我在我的grails项目(服务和控制器等)中使用了一些布尔值,因此它们在我的域类中声明,但我不希望它们出现在数据库的表中。我没有将它们清除为布尔值,而是尝试了Def,但这是行不通的。有办法吗?

2 个答案:

答案 0 :(得分:0)

如果您要拥有一个域类的属性,该属性不会存储在数据库中,请使用transients

这是一个简单的例子:

class Thing {
   String name
   boolean flag
   boolean anotherFlag
   static transients = ['flag', 'anotherFlag']
}

答案 1 :(得分:0)

如果您定义gettersetter而未声明对象本身默认情况下成为瞬态对象,那么我从Burt Beckwith的其中一部grails视频中学到的东西属于grails域类。因此,按照上面的说明而不是所有的声明

//This will return the same value
boolean getFlag() { 
  return someField && someOtherField 
}
//so you call `object.flag` or `object.getFlag()`

这省去了必须声明一个瞬态值的麻烦,也使您有机会即时应用一些逻辑。

说实话,看来您正在使用域类进行验证和输入。通常,我会在src中分离并创建一个验证类来完成这一部分,并让域类来做原始工作-使其保持清晰的状态