2010-11-12 7 views
14

Ich versuche, Standard-Art von meinem hasMany Attribut mit Mapping-Anweisung festlegen. Ich folge den Grals doc, aber es funktioniert nicht für mich (Grails 1.3.5). Mein Code sieht so aus:Grails Standard-Art von "hasMany" Domain-Attribute

class Note { 
    Calendar sendDate 
    static belongsTo = Message 
} 

class Message { 
    static hasMany = [notes: Note] 
    static mapping = { 
     notes sort:'sendDate desc' 
    } 
} 

Die Fehlermeldung wie folgt aussieht:

... 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'notes0_.sendDate' in 'order clause' 
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
     at com.mysql.jdbc.Util.getInstance(Util.java:384) 
... 

Sie Fehler in meinem Code sehen Sie?

+0

exportieren Sie Ihr Schema und siehe Tabelle und Spalten existieren http://www.grails.org/doc/1.1/ref/Command%20Line/schema-export.html –

+0

@Aaron - Wenn ich dies mit dem Standard ausprobiert hsqldb In-Memory-Datenbank, es erstellt nur eine Spalte für das 'Kalender'-Feld, und alles sah normal aus (ich hatte gedacht, dass es vielleicht zwei Spalten zu speichern, z. B. die Zeitzone oder so etwas, aber es schien nicht so es war). –

Antwort

20

ein paar Dinge, die helfen, das Problem beheben können:

  • Haben Sie wirklich einen Calendar für die sendDate Eigenschaft verwenden müssen? Die meiste Zeit würde man eine java.util.Date verwenden. Wird das Problem durch Ändern des Feldtyps in Date behoben?
  • Ich habe ein Beispiel mit Ihren Mappings und bekam einen Fehler. Versuchen Sie, Ihre Message statischen mapping Schließung dieser Wechsel:

    static mapping = { 
        notes sort: 'sendDate', order: 'desc' 
    } 
    
+1

Leider funktionierte beides nicht für mich. Aber ich habe das Problem gelöst, dass ich die Beziehung von beiden Seiten definiert habe. Ich habe nur "Message message" zur Note Klasse hinzugefügt und es funktioniert. :-) Aber trotzdem danke für dein Interesse! :-) – Mateo

+2

@Mateo - Gut zu wissen. Ich würde empfehlen, alles, was Sie für eine Lösung gefunden haben, als Antwort zu veröffentlichen und dann (in ein paar Tagen) zu akzeptieren, damit andere wissen, wie sie das Problem lösen können, wenn sie darauf stoßen. –

9

This page alles über Object Relational Mapping sagt, ich mit meiner app hatte ein ähnliches Problem. Ich löste es etwa so:

class Note implements Comparable { 
    Calendar sendDate 
    static belongsTo = Message 

    int compareTo(obj) { 
    sendDate.compareTo(obj.sendDate) 
    } 
} 

und

class Message { 
    SortedSet notes 
    static hasMany = [notes: Note] 
} 

Hoffnung dieses helpes!

Verwandte Themen