我在我的grails项目(服务和控制器等)中使用了一些布尔值,因此它们在我的域类中声明,但我不希望它们出现在数据库的表中。我没有将它们清除为布尔值,而是尝试了Def,但这是行不通的。有办法吗?
答案 0 :(得分:0)
如果您要拥有一个域类的属性,该属性不会存储在数据库中,请使用transients。
这是一个简单的例子:
class Thing {
String name
boolean flag
boolean anotherFlag
static transients = ['flag', 'anotherFlag']
}
答案 1 :(得分:0)
如果您定义getter
或setter
而未声明对象本身默认情况下成为瞬态对象,那么我从Burt Beckwith的其中一部grails视频中学到的东西属于grails域类。因此,按照上面的说明而不是所有的声明
//This will return the same value
boolean getFlag() {
return someField && someOtherField
}
//so you call `object.flag` or `object.getFlag()`
这省去了必须声明一个瞬态值的麻烦,也使您有机会即时应用一些逻辑。
说实话,看来您正在使用域类进行验证和输入。通常,我会在src中分离并创建一个验证类来完成这一部分,并让域类来做原始工作-使其保持清晰的状态