我正在尝试进行逆向工程,并为数据库中的给定表模式创建模型类。
表的名称为infopac_usersProva
,它有两列:
我写过这样的模型:
class Infopac_usersProva {
String strCip
String usernm
static mapping={
datasource 'gpaq'
table 'infopac_usersProva'
version false
columns{
id column: 'strCip'
usernm column: 'USERNM', sqlType: "varchar(75)"
strCip column: 'strCip', sqlType: "varchar(15)"
}
}
static constraints = {
strCip (nullable:true, insert:false, update:false)
}
}
但是我收到了这个错误:
实体映射中的重复列:edu.upc.gpaq.domain.generic.Infopac_usersProva列:strCip(应使用insert =“false”update =“false”映射)
我需要为strCip指定列名,因为如果我取出该行,模型就会尝试获取str_cip而不是strCip。如果我拿出“id column:'strCip',那么我会收到一条错误消息,说没有id列。
我做错了什么?
答案 0 :(得分:1)
我认为你可以摆脱strCip
的定义
而是正确定义id字段。
看看这是否适合你:
class Infopac_usersProva {
String usernm
static mapping={
datasource 'gpaq'
table 'infopac_usersProva'
version false
columns{
id generator: 'assigned', name: 'strCip', type: 'string'
usernm column: 'USERNM', sqlType: "varchar(75)"
}
}
我没有检查过这个......
答案 1 :(得分:0)
这个应该有效:
class Infopack_usersProva {
String strCip
String usernm
static constraints = {
strCip(nullable: false, maxSize: 15)
usernm(nullable: true, maxSize: 75)
}
static mapping = {
datasource('gpaq')
table('infopac_usersProva')
version(false)
autoTimestamp(false)
usernm(column: 'USERNM')
strCip(column: 'strCip')
id(column: 'strCip', name: 'strCip', generator: 'assigned')
}
}
但它有strCip
不为空。但是AFAIK你需要一个非空的id列,所以我看不到任何解决方法。至少用grails / hibernate。
如果您希望strCip
永远不会包含在任何save()
中,您需要指定
strCip(column: 'strCip', insertable: false, updateable: false)
在映射块中。我不知道有任何名为insert
或update
的约束,并希望它们在那里被忽略。
答案 2 :(得分:0)
我最终做了以下事情(见粗体文字)
class Infopac_usersProva {
String usernm
String id
static mapping={
datasource 'gpaq'
table 'infopac_usersProva'
version false
autoTimestamp false
columns{
**id column: 'strCip', sqlType: "varchar(15)"**
usernm column: 'USERNM', sqlType: "varchar(75)"
}
}
static constraints = {
}
}
现在有效。非常感谢你!
答案 3 :(得分:0)
可能会有点迟到,但您需要使用可更新和可插入的属性。它对我有用:
class Infopac_usersProva {
String strCip
String usernm
static mapping={
datasource 'gpaq'
table 'infopac_usersProva'
version false
columns{
id column: 'strCip'
usernm column: 'USERNM', sqlType: "varchar(75)"
strCip column: 'strCip', updateable: false, insertable: false
}
}
}