Ändern der primary key id, String Typ in Grails
Meine Grails 2.0 app hat ein Benutzer domain-Objekt definiert:
class User {
static mapping = {
table "dt_user"
columns {
id column:'user_id', generator:'assigned', type:'string'
}
}
Wenn ich versuche zu speichern, einen neuen Benutzer in meiner BootStrap-Datei, etwa so:
def user = new User(id: "smith").save(failOnError:true)
Bekomme ich die folgende Fehlermeldung:
| 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
Ich auch versucht, die änderung der User-Klasse:
class User {
static mapping = {
table "dt_user"
columns {
id column:'user_id', generator:'assigned', type:'string', name:'id'
}
}
String id
}
welche die oben genannten Fehler Weg. Allerdings habe ich festgestellt, dass dies führte zu ids automatisch erzeugt wird, völlig ignoriert die generator: 'assigned'
- Klausel.
Was mache ich hier falsch?
InformationsquelleAutor Patrick Marchwiak | 2012-01-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht aus wie die Verpackung es in der
columns
block ist der Schuldige. Dies kann erforderlich gewesen irgendwann (vor meiner Zeit), aber es ist schon optional, solange ich verwendet habe, Grails und anscheinend ist jetzt gebrochen. Aber Sie können nur erklären, sondern spaltenzuordnungen direkt:Solange das Feld ist deklariert als String und es ist so konfiguriert, wie
assigned
wird es funktionieren; es gibt keine Notwendigkeit zu sagen, GORM ist es ein String ist, kann das herausfinden.InformationsquelleAutor Burt Beckwith