是否可以创建一个没有“id”的表?例如,这是我的域:
class SnbrActVector {
int nid
String term
double weight
static mapping = {
version false
id generator: 'identity'
}
static constraints = {
}
}
当我运行这条 SQL 语句时,它失败了:
insert into snbr_act_vector values (5, 'term', 0.5)
我检查了表格,'id' 已经设置为自动递增。我在想另一种选择是删除“id”本身。或者还有其他解决方法吗?请假设更改给定的 SQL 语句不是一个选项。
最佳答案
Gorm 需要一个 id 字段才能工作。您可以使用如下所示的 transient 变量来伪造分配的 ID。 getter 和 setter 将 nid 字段映射到 id 字段。
使用此方法保存域对象时,您必须执行以下操作:
snbrActVectgor.save(insert:true)
因为 grails 认为非 null id 是一个持久实例。
class SnbrActVector {
Integer id
// nid is the actual primary key
static transients = ['nid']
void setNid(Integer nid) {
id = nid
}
Integer getNid() {
return nid
}
static mapping = {
version false
id generator:'assigned', column:'nid', type:'integer'
}
}
关于mysql - Grails 域是否可能没有 'id' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2582904/