是否可以创建一个没有“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 字段才能工作。您可以使用如下所示的瞬态变量来伪造指定的 id。 getter 和 setter 将 nid 字段映射到 id 字段。
使用此方法保存域对象时,您必须执行以下操作:
snbrActVectgor.save(insert:true)
因为 grails 认为非空 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'
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)