2009-06-16 9 views
0

Ich versuche, eine vorhandene Datenbank mit Grails zu verwenden. Mein DataSource.groovy beginnt mit diesem:Grails Ignorieren @Id Anmerkung

@Entity 
@Table(name = "regexpression", catalog = "tigger") 
@SuppressWarnings("serial") 
public class Regexpression implements Serializable { 

    /** 
    * Attribute regexpId. 
    */ 
    private Integer regexpId; 

    . . . 

    /** 
    * <p> 
    * </p> 
    * @return regexpId 
    */ 
    @Basic 
    @Id 
    @GeneratedValue 
    @Column(name = "regexp_id") 
     public Integer getRegexpId() { 
     return regexpId; 
    } 
     . . . 

Wenn ich laufe den generierten Code ich folgende Fehlermeldung erhalten:

import org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsAnnotationConfiguration 
dataSource { 
    configClass = GrailsAnnotationConfiguration.class 
    pooled = true 
    driverClassName = "com.mysql.jdbc.Driver" 
    username = "root" 
    password = "12345" 

} 

ich meine Klasse wie folgt kommentiert haben

org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [regexpressionInstance.id] on line [40]: groovy.lang.MissingPropertyException: No such property: id for class: org.maflt.flashlit.pojo.Regexpression 

So Es scheint, dass Grails die @ Id-Annotation auf regexp_id ignoriert. Ist das richtig?

Ich plane, die Datenbank zu ändern, um ID anstelle von regexp_id zu verwenden. Aber ich sollte nicht haben.

Irgendwelche Ideen?

Danke!

+0

Ich habe den Primärschlüssel in ID geändert, den Pojo neu generiert, die Grails App neu generiert und jetzt funktioniert es. Aber ich mag die Idee nicht, jedes Schlüsselfeld einfach id zu nennen. Außerdem habe ich alle meine Fremdschlüsseleinschränkungen gelöscht und erstellt. Ich hoffe also immer noch auf eine Lösung. –

Antwort

0

Hmm, Sie könnten mit der Benennung der Integer-Feld-ID entkommen, dann setzen Sie einfach die @Column-Annotation, um diese Eigenschaft auf die Spalte regexp_id in der Tabelle zu verweisen.

+0

Ich wette, du hast Recht. Ich hatte gehofft, es zu testen, aber es stellt sich heraus, dass ich zu weit gegangen bin, um an dieser Stelle zurückzugehen. Danke! –