2010-11-12 11 views
14

Estoy intentando establecer el tipo predeterminado de mi atributo hasMany mediante la declaración de asignación. Estoy siguiendo el documento de Grails pero no funciona para mí (grails 1.3.5). Mi código es el siguiente:Tipo predeterminado de Grails de atributos de dominio "hasMany"

mensaje
class Note { 
    Calendar sendDate 
    static belongsTo = Message 
} 

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

El error parece:

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

No hay algún error en mi código?

+0

exportar su esquema y ver de tabla y columnas existen http://www.grails.org/doc/1.1/ref/Command%20Line/schema-export.html –

+0

@ Aaron - Cuando probé esto con el valor predeterminado hsqldb en la base de datos en memoria, solo creó una columna para el campo 'Calendario', y todo parecía normal (pensé que tal vez estaba creando dos columnas para almacenar, por ejemplo, la zona horaria o algo así, pero no parecía que era). –

Respuesta

20

Un par de cosas que pueden ayudar a solucionar el problema:

  • ¿Realmente necesita utilizar un Calendar para la propiedad sendDate? La mayoría de las veces, uno usaría un java.util.Date. ¿Cambiar el tipo de campo a Date soluciona el problema?
  • Ejecuté un ejemplo con sus asignaciones y obtuve un error. Intente cambiar su Message cierre estática mapping a esto:

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

Lamentablemente, ambos no funcionaron para mí. Pero he resuelto el problema de que definí la relación de ambos lados. Acabo de agregar "Mensaje mensaje" a la clase Note y funciona. :-) Pero de todas formas ¡gracias por su interés! :-) – Mateo

+2

@ Mateo - Es bueno saberlo. Recomiendo publicar como respuesta lo que averiguaste sobre una solución y luego aceptarla (en un par de días) para que otros puedan saber cómo resolver el problema si lo encuentran. –

9

This page dice todo acerca de objetos Relational Mapping, que tenía un problema similar con mi aplicación. Lo resuelto de este modo:

class Note implements Comparable { 
    Calendar sendDate 
    static belongsTo = Message 

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

y

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

Esperamos que este helpes!

Cuestiones relacionadas