2017-07-31 48 views
0

另一個頭疼:-(有人請幫助。我只是想批量引導域創建我的Grails使用eachWithIndex我的引導文件在3個工程領域的實例。與eachWithIndex

這裏是我的領域類...

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 
    } 

} 

下面是批創建我的引導代碼...

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

我靠近拉我的頭髮就這一個點。

這裏的錯誤....

2017年7月31日16:30:41.755錯誤--- [主] ohengine.jdbc.spi.SqlExceptionHelper:你在你的SQL錯誤句法;在第1行檢查與您的MySQL服務器版本對應的手冊,以使用正確的語法以使用接近「訂單」值(0,'Mortal',0)')2017-07-31 16:30:41.817錯誤--- [主] osboot.SpringApplication>:應用程序啓動失敗

org.springframework.jdbc.BadSqlGrammarException:Hibernate操作:無法執行語句;錯誤的SQL語法[n/a];嵌套異常是com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL語法中有錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「順序)值(0,‘凡人’,0)」在1號線 在...

+0

這就是爲什麼我們應該使用的ORM ......等一下環繞你的列名! ;) – cfrick

回答

1

因爲爲了是一個保留字,你必須使用一些其他的名稱爲您列。或用反引號

static mapping = { 
    order column: "order_col" 
} 

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

你先進去了。這確實是問題所在。應該對我很明顯。謝謝你的幫助 :-) – AndyRED

2

order是一個SQL關鍵字。您需要重命名或重新映射該屬性。

static mapping = { 
    order column: "my_order" 
}