我想连接到旧数据库。我的遗留数据库使用的是postgresql。我使用db-reverse-engineer插件生成域类,生成的域类:
class TableLogin {
String username
String password
Integer userLevel
static mapping = {
id name: "username", generator: "assigned"
version false
}
static constraints = {
username maxSize: 30
password nullable: true, maxSize: 36
userLevel nullable: true
}
}
我运行generate-all
,动作列表运行正常。但是,当我单击其中一个数据/用户名(执行show动作)时,我收到此错误:找不到ID为null的TableLogin
我尝试使用此代码进行跟踪:
def rowLogin = TableLogin.get("supervisor")
log.error(rowLogin as JSON)
我得到了:
{"class":"webnico.TableLogin","id":null,"password":"2dcc509a6f7584","userLevel":0,"username":"supervisor"}
为什么id
为空?
我认为因为id为null所以show动作不起作用
我更新了我的域类,成为:
class TableLogin {
String id
String username
String password
Integer userLevel
static mapping = {
id name: "username", generator: "assigned"
version false
}
static constraints = {
username maxSize: 30
password nullable: true, maxSize: 36
userLevel nullable: true
}
def afterLoad() {
id = username
}
}
id
不再为空
{"class":"webnico.TableLogin","id":"supervisor","password":"2dcc509a6f7584","userLevel":0,"username":"supervisor"}
但是,节目动作仍然不起作用。 show URL似乎是正确的,http://mylocalhost.com:9000/webnico/tableLogin/show/supervisor但是我仍然遇到了同样的错误:找不到TableLogin,id为null
当generate-all
类型不是id
时,是否意味着我们无法使用脚手架(Long
)?
答案 0 :(得分:0)
Aha ... show动作无法正常运行,因为默认情况下show动作的参数为Long。所以,我们需要修改参数类型成为String。
def show(Long id) {
...
}
成为
def show(String id) {
...
}
当然,我们还需要修改其他需要id
参数的操作(编辑,更新,删除)。