另一个令人头痛的问题:-(有人请帮忙。我只是想在我的Grails 3项目的bootstrap文件中使用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-07-31 16:30:41.755 ERROR --- [main] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在第1行使用“order”(0,'Mortal',0)附近的正确语法 2017-07-31 16:30:41.817 ERROR --- [main] o.s.boot.SpringApplication>:应用程序启动失败
org.springframework.jdbc.BadSqlGrammarException:Hibernate操作:无法执行语句;糟糕的SQL语法[不适用];嵌套异常是com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在第1行使用“order”(0,'Mortal',0)附近的正确语法 在......
答案 0 :(得分:2)
order
是一个SQL关键字。您需要重命名或重新映射该属性。
static mapping = {
order column: "my_order"
}
答案 1 :(得分:1)
因为 order 是保留字,所以您必须为列使用其他名称。或者用反引号包围你的列名
实施例
static mapping = {
order column: "order_col"
}
或
static mapping = {
order column: "`order`"
}