miei Grails 2.0 app ha un oggetto di dominio definito dall'utente:La modifica primaria id chiave per tipo String in Grails
class User {
static mapping = {
table "dt_user"
columns {
id column:'user_id', generator:'assigned', type:'string'
}
}
Quando si tenta di salvare un nuovo utente nel mio file di avvio in questo modo:
def user = new User(id: "smith").save(failOnError:true)
ottengo il seguente errore:
| Error 2012-01-13 10:09:42,659 [main] ERROR property.BasicPropertyAccessor - IllegalArgumentException in class: User, setter method of property: id
| Error 2012-01-13 10:09:42,660 [main] ERROR property.BasicPropertyAccessor - expected type: java.lang.Long, actual value: java.lang.String
ho anche provato a cambiare la classe utente a questo:
class User {
static mapping = {
table "dt_user"
columns {
id column:'user_id', generator:'assigned', type:'string', name:'id'
}
}
String id
}
che ha reso gli errori di cui sopra andare via. Tuttavia ho scoperto che questo ha comportato la generazione automatica degli ID, ignorando completamente la clausola generator: 'assigned'
.
Cosa sto facendo di sbagliato qui?