fir*_*iel 7 mysql grails hibernate grails-orm
是否可以创建一个没有'id'的表?例如,这是我的域名:
class SnbrActVector {
int nid
String term
double weight
static mapping = {
version false
id generator: 'identity'
}
static constraints = {
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行此SQL语句时,它失败:
insert into snbr_act_vector values (5, 'term', 0.5)
Run Code Online (Sandbox Code Playgroud)
我检查了表格,'id'已经设置为自动增量.我认为另一种选择是删除'id'本身.或者还有其他解决方法吗?请假设不能更改给定的SQL语句.
Gorm需要id字段才能工作.您可以使用如下的瞬态变量伪造指定的ID.getter和setter将nid字段映射到id字段.
使用此方法保存域对象时,您必须执行以下操作:
snbrActVectgor.save(insert:true)
Run Code Online (Sandbox Code Playgroud)
因为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'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12786 次 |
| 最近记录: |