2010-12-16 9 views
2

Hallo habe ich diese Domain in Grails folgendenWie Grails Fehler zu lösen Wiederholte Spalte in Zuordnung für Entität? auf bestehenden PostgreSQL-Datenbank

 
class Customer { 
    static mapping = { 
     table 'customer' 
     // version is set to false, because this isn't available by default for legacy databases 
     version false 
     id column:'customerid' //generator:'identity', 
    } 
    Long customerid 
    Long customergroupid 
    String username 
    String password 
    String name 
    String street 
    String city 
    String province 
    String postcode 
    String country 
    Date dateregistered 
    String balance 
    Long parentid 
    String parentrebate 
    String metapath 
    Long metalevel 
    Integer smsreplystatus 
    Integer status 
    String reversalurl 

    static constraints = { 
     customerid(insert:false,update:false) 
     customergroupid(max: 9999999999L) 
     username(size: 1..20, blank: false) 
     password(size: 1..32, blank: false) 
     name(size: 1..20, blank: false) 
     street(size: 0..50) 
     city(size: 0..20) 
     province(size: 0..20) 
     postcode(size: 0..5) 
     country(size: 0..20) 
     dateregistered(nullable: true) 
     balance() 
     parentid(max: 9999999999L) 
     parentrebate() 
     metapath(size: 1..255, blank: false) 
     metalevel(max: 9999999999L) 
     smsreplystatus(max: 99999) 
     status(max: 99999) 
     reversalurl(size: 0..50) 
    } 
    String toString() { 
     return "${customerid}" 
    } 
} 

i mit vorhandenen Daten aktuellen Datenbank haben, und hat Zuordnung zu GORM mit grag aber ich erhalte diesen Fehler

 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for entity: postgresql.Customer column: customerid (should be mapped with insert="false" update="false") 
    ... 23 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for entity: postgresql.Customer column: customerid (should be mapped with insert="false" update="false") 

Antwort

1

Habe dasselbe Problem, entferne "Long customerid"

Dies ist vielleicht keine praktikable Lösung, aber zumindest kompiliert die App und erstellt die Tabelle.

Werden überhaupt nicht untersucht, wie ich diese Arbeit gerade geschaffen zu bekommen - vielleicht, wenn eine benutzerdefinierte Identität Spalte Einstellung, die Eigenschaftsdefinition impliziert (also die „wiederholte Spalte ...“ Fehler)

+2

Update: Fehler bei Eigenschaft nicht vorhanden Fehler, nett. Lösung, Name hinzufügen: 'customerid' in Mapping-Schließung für benutzerdefinierte ID-Spalte. Funktioniert für mich endlich in MySQL. Kann das vorhandene Schema beibehalten und den Grails einen Testlauf geben ... – virtualeyes

+1

Zusätzlich zum Hinzufügen von name attrib zu mapping (und Einfügen: false, update: false zu Mapping, nicht constraint) müssen Sie auch eine constraint nullable: true auf Ihrem hinzufügen benutzerdefinierte ID-Spalte; Andernfalls erhalten Sie einen Null-Eigenschaft Fehler nicht gut dokumentiert, etwas davon - im Grunde verbrachte ein paar Stunden ausprobieren, verschiedene Kombinationen. Zeitverschwendung mit einem schnellen Entwicklungsrahmen, ironisch – virtualeyes

+3

insert: false, update: false not necessary Nur Mapping {ID Spalte: 'Col', Name: 'Col'} und Constraints {Col (Nullable: True)} macht den Trick für ich endlich! – virtualeyes

Verwandte Themen