我已经阅读了很多有关此的问题,似乎没人能正常工作。
我正在使用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'
}
它实际上使用自然键和所有内容按照我想要的方式映射表,它插入了新的用法,但是gui无法检索任何对象并显示错误:“未找到id为null的usuario”
我试图修改show(Long id)方法,但也无济于事,这是我从 Controller 获取的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]
}
最佳答案
您需要指定分配给生成器的:
static mapping = {
...
id column: 'nick', generator: 'assigned'
}
另外,添加以下约束可能是明智的:
static constraints = {
nick blank:false, nullable:false, unique: true
}