ORA-00972: l'identificateur est trop long - meilleure stratégie pour l'éviter à Grails
je reçois une erreur "ORA-00972: identifier est trop long" lors de l'enregistrement d'un objet de classe de domaine.
Caused by: org.hibernate.exception.SQLGrammarException: could not initialize a collection: [com.intelligrape.model.Address.studentsForPermanentAddressId#79366215]
<!-Quelles sont les solutions possibles pour résoudre ce problème, à l'exception de la réduction de la longueur des étudiants pour les étudiants permanents? La raison étant, c'est une table de base de données legacy que je ne peux pas modifier.
EDIT: ajout de la description de la classe de domaine comme demandé par Rob Hruska
package com.intelligrape.model
class Address {
String address1
String address2
String boxNumber
String city
Long stateLid
String province
String zipCode
Long countryLid
Double latitude
Double longitude
Long radius
static hasMany = [studentsForPermanentAddressId: Student, studentsForLocalAddressId: Student]
static constraints = {
address1 nullable: true
address2 nullable: true
boxNumber nullable: true, size: 1..25
city nullable: true, size: 1..30
stateLid nullable: true
province nullable: true, size: 1..64
zipCode nullable: true, size: 1..15
countryLid nullable: true
latitude nullable: true
longitude nullable: true
radius nullable: true
studentsForPermanentAddressId nullable: true
studentsForLocalAddressId nullable: true
}
}
9
demandé sur
Mohd Farid
2011-09-15 18:27:46
1 réponses
Ajouter un bloc de mappage et les mappages de colonnes existants:
package com.intelligrape.model
class Address {
String address1
String address2
String boxNumber
String city
Long stateLid
String province
String zipCode
Long countryLid
Double latitude
Double longitude
Long radius
static hasMany = [studentsForPermanentAddressId: Student, studentsForLocalAddressId: Student]
static mappings = {
studentsForPermanentAddressId(column: 'stud_perm_addr_id')
}
static constraints = {
address1 nullable: true
address2 nullable: true
boxNumber nullable: true, size: 1..25
city nullable: true, size: 1..30
stateLid nullable: true
province nullable: true, size: 1..64
zipCode nullable: true, size: 1..15
countryLid nullable: true
latitude nullable: true
longitude nullable: true
radius nullable: true
studentsForPermanentAddressId nullable: true
studentsForLocalAddressId nullable: true
}
}
en passant, si ce n'était pas une base de données ancienne, vous pourriez utiliser ce projet: http://code.google.com/p/hibernate-naming-strategy-for-oracle/
Pour générer des mappages corrects dès le début.
5
répondu
Rob Elsner
2011-09-16 13:24:12