2017-07-31 6 views
0

Un autre casse-tête :-(Quelqu'un s'il vous plaît aider. Je suis tout simplement essayer de lots créer des instances de domaine en utilisant eachWithIndex dans mon fichier d'amorçage dans mes 3 Grails projet.domaines de bootstrapping avec eachWithIndex

Voilà ma classe de domaine ...

package ttt_server 

class TttPriority { 

    String name 
    int order 
    Date dateCreated 

    static constraints = { 
     name blank: false, nullable: false 
     order blank: false, nullable: false 
     dateCreated nullable:true, blank:true 
    } 

} 

Voici mon code d'amorçage pour la création de lots ...

["Mortal","Major","Critical","Minor","Nice To Have"].eachWithIndex{ name, idx -> 
    new TttPriority(name: name, order: idx).save(flush:true) 
} 

Je suis près du point de tirer mes cheveux sur celui-ci.

est ici l'erreur ....

2017-07-31 16: 30: 41,755 ERREUR --- [principal] ohengine.jdbc.spi.SqlExceptionHelper: Vous avez une erreur dans votre SQL syntaxe; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près des valeurs 'order) (0,' Mortel ', 0)' à la ligne 1 2017-07-31 16: 30: 41.817 ERROR --- [[ principal] osboot.SpringApplication>: Échec du démarrage de l'application

org.springframework.jdbc.BadSqlGrammarException: opération Hibernate: impossible d'exécuter l'instruction; mauvaise grammaire SQL [n/a]; l'exception imbriquée est com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de « valeurs ordre) (0, « Mortal », 0) » à la ligne 1 à ...

+0

Et c'est la raison pour laquelle nous devrions utiliser ORM ... attendez une minute! ;) – cfrick

Répondre

1

Parce que pour est un mot réservé, vous devez utiliser un autre nom pour votre colonne. Ou entourer votre nom de colonne avec des accents graves

Exemple

static mapping = { 
    order column: "order_col" 
} 

ou

static mapping = { 
    order column: "`order`" 
} 
+0

Vous êtes arrivé en premier. C'était en effet le problème. Cela aurait dû être évident pour moi. Je vous remercie pour votre aide :-) – AndyRED

2

order est un mot-clé SQL . Vous devez renommer ou remapper cette propriété.

static mapping = { 
    order column: "my_order" 
}