哪些单词是无效的域类名

时间:2016-07-23 19:34:13

标签: grails

我刚刚安装了Grails 3.2.0.M2并创建了一个名为Group的新域类。然后我运行generate-all *命令并试图浏览到GroupController,但是遇到了这个错误:

URI:       /group/index
Class:     org.h2.jdbc.JdbcSQLException
Message:   null
Caused by: Syntax error in SQL statement "SELECT COUNT(*) AS Y0_ FROM GROUP[*] THIS_ "; expected "identifier"; SQL statement: select count(*) as y0_ from group this_ [42001-192]

这里发生了什么:

def index(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    respond Group.list(params), model:[groupCount: Group.count()] // Error occurs here
}

奇怪的是,如果我将域类和控制器分别重命名为GroupzGroupzController,问题就会消失。为什么我不能命名我的域类组?域名类有哪些其他名称是非法的?

2 个答案:

答案 0 :(得分:2)

您可以在Grails wiki上找到保留字列表。

或者,您可以使用static mapping property重命名您的课程来解决此问题:

class Group {
    ...
    static mapping = { table 'my_group' }
    ...
}

答案 1 :(得分:0)

所有域类都被扫描并以下列方式转换为名称

用户 - >用户 UserMapping - > user_mapping 等等。

Basicall驼峰大小写是字符串由大写字符分割,然后用_分隔。

  

您不能使用导致sql中的>限制/保留字的任何域类名称。

     

e.q组,选择,在哪里,从,加入等

如果您仍想在Grails中使用这些名称,则可以使用mapping块更改表名。 Grails将您的域/实体称为类名,但在内部将其绑定到指定的映射

e.g

static mapping {
   table : 'my_table_name'
}