在域 class 中声明布尔值而不出现在数据库中
Declaring booleans in a domain class without appearing in database
我有一些布尔值在我的 grails 项目(服务和控制器等)中使用,所以它们在我的域中声明 class 但我不希望它们出现在 table 中数据库。我没有清除它们的布尔值,而是尝试了 Def,但这不起作用。有办法吗?
如果您想要 属性 的域 class 不存储在数据库中,请使用 transients.
这是一个简单的例子:
class Thing {
String name
boolean flag
boolean anotherFlag
static transients = ['flag', 'anotherFlag']
}
如果您定义 getter
或 setter
而没有声明对象本身,我从 Burt Beckwith 的一个 grails 视频中挑选的东西在 grails 域 classes默认情况下,它本身成为一个瞬态对象。所以按照上面而不是所有的声明,如果你有
//This will return the same value
boolean getFlag() {
return someField && someOtherField
}
//so you call `object.flag` or `object.getFlag()`
这样就不必再声明瞬态值,同时让您有机会即时应用一些逻辑。
老实说,您似乎同时使用域 class 进行验证和输入。通常我在 src 中分离并创建一个验证 class 来完成这部分,并让域 class 来做原始工作 - 按照说
保持它更干净
我有一些布尔值在我的 grails 项目(服务和控制器等)中使用,所以它们在我的域中声明 class 但我不希望它们出现在 table 中数据库。我没有清除它们的布尔值,而是尝试了 Def,但这不起作用。有办法吗?
如果您想要 属性 的域 class 不存储在数据库中,请使用 transients.
这是一个简单的例子:
class Thing {
String name
boolean flag
boolean anotherFlag
static transients = ['flag', 'anotherFlag']
}
如果您定义 getter
或 setter
而没有声明对象本身,我从 Burt Beckwith 的一个 grails 视频中挑选的东西在 grails 域 classes默认情况下,它本身成为一个瞬态对象。所以按照上面而不是所有的声明,如果你有
//This will return the same value
boolean getFlag() {
return someField && someOtherField
}
//so you call `object.flag` or `object.getFlag()`
这样就不必再声明瞬态值,同时让您有机会即时应用一些逻辑。
老实说,您似乎同时使用域 class 进行验证和输入。通常我在 src 中分离并创建一个验证 class 来完成这部分,并让域 class 来做原始工作 - 按照说
保持它更干净