我已经阅读了大量有关此问题的问题,而且似乎没人能让它发挥作用。
我正在使用grails,我正在创建一个没有id作为主键的类。
我收到消息“找不到id null的usuario”。这是我的域类的代码:
class Usuario implements Serializable{
String nombre
String celular
String telefono
String apellido
String password
String nick
static mapping = {
table 'Usuarios'
version false
id composite: ['nick']
}
}
我也尝试了正常的方式:
static mapping = {
table 'Usuarios'
version false
id name: 'nick'
}
它实际上以我想要的方式将表格映射到自然键和所有内容,它会插入新的usuarios,但是gui无法检索任何对象并显示错误:“找不到idu null的usuario”
我试图修改show(Long id)方法,但它也没有帮助,这是我从控制器的show方法:
def show(String nick) {
def usuarioInstance = Usuario.get(nick)
if (!usuarioInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'usuario.label', default: 'Usuario'), nick])
redirect(action: "list")
return
}
[usuarioInstance: usuarioInstance]
}
答案 0 :(得分:2)
您需要指定已分配的生成器:
static mapping = {
...
id column: 'nick', generator: 'assigned'
}
另外,添加以下约束可能是明智的:
static constraints = {
nick blank:false, nullable:false, unique: true
}