Sql grails hibernate创建一个只有一行的表
我需要创建一个只包含一行的表 我有一个域类,例如Sql grails hibernate创建一个只有一行的表,sql,hibernate,grails,gorm,Sql,Hibernate,Grails,Gorm,我需要创建一个只包含一行的表 我有一个域类,例如Book,它的属性是Year class Book { Integer year static mapping = { ... } } 我需要在域类中编写什么?例如,如果您只需要一个包含年份2013的图书记录,那么您可以将约束定义为 class Book { Integer year static constraints = { year inList: [2013], unique: true
Book
,它的属性是Year
class Book {
Integer year
static mapping = {
...
}
}
我需要在域类中编写什么?例如,如果您只需要一个包含年份
2013
的图书记录,那么您可以将约束定义为
class Book {
Integer year
static constraints = {
year inList: [2013], unique: true
}
}
unique:true
不允许您使用重复的year
创建记录,并且inList
将确保您有且只有一个year
,即2013年。这两个约束将在第一次插入时通过,并在后续插入/更新时失败。因此,您在2013年的书籍中只获得了一条记录。不幸的是,您在插入之前用于完成此的GORM事件不允许拒绝插入(从Grails 2.2.2开始)beforeUpdate
可以,但在这种情况下对您没有帮助
我想到了两种解决方案:
- 使用服务方法执行是否插入的决策。但是,如果另一个类直接使用域类,则不会自动拒绝插入
- 创建一个自定义Hibernate,检查表是否已经有数据
Burt Beckwith概述了如何使用自定义Hibernate事件侦听器在his中创建有效的只读域类,如果您想使用后者的示例。我认为您没有声明行数限制。你可以对年份有一个唯一的限制,这就足够了吗?