2010-11-12 6 views
14

Sto tentando di impostare l'ordinamento predefinito del mio attributo hasMany utilizzando l'istruzione di mapping. Sto seguendo il documento Grails ma non funziona per me (grails 1.3.5). Il mio codice è simile:Ordinamento predefinito di Grails degli attributi del dominio "hasMany"

messaggio
class Note { 
    Calendar sendDate 
    static belongsTo = Message 
} 

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

L'errore si presenta come:

... 
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) 
... 

Ti vedi qualche errore nel mio codice?

+0

esportare lo schema e vedere la tabella e le colonne esistono http://www.grails.org/doc/1.1/ref/Command%20Line/schema-export.html –

+0

@Aaron - Quando ho provato questo con l'impostazione predefinita hsqldb database in memoria, ha creato solo una colonna per il campo 'Calendar', e tutto sembrava normale (avevo pensato che forse stava creando due colonne per memorizzare, ad esempio, il fuso orario o qualcosa del genere, ma non sembrava che era). –

risposta

20

Un paio di cose che possono aiutare a risolvere il problema:

  • Avete davvero bisogno di usare un Calendar per la proprietà sendDate? Il più delle volte, si usa uno java.util.Date. La modifica del tipo di campo in un Date risolve il problema?
  • Ho eseguito un esempio con i mapping e ho ricevuto un errore. Prova a cambiare la tua mapping chiusura Message statica a questa:

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

Sfortunatamente entrambi non hanno funzionato per me. Ma ho risolto il problema che ho definito la relazione da entrambe le parti. Ho appena aggiunto "Message message" alla classe Note e funziona. :-) Ma comunque grazie per il vostro interesse! :-) – Mateo

+2

@ Mateo - Buono a sapersi. Ti consiglio di postare qualsiasi cosa tu abbia scoperto per una soluzione come risposta e quindi accettarla (in un paio di giorni) in modo che altri possano sapere come risolvere il problema se lo incontrano. –

9

This page racconta tutto su Object Relational Mapping, ho avuto un problema simile con la mia app. Ho risolto in questo modo:

class Note implements Comparable { 
    Calendar sendDate 
    static belongsTo = Message 

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

e

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

Spero che questo helpes!