【问题标题】:How can I create a table with name 'user'如何创建名称为“用户”的表
【发布时间】:2014-05-29 09:18:59
【问题描述】:

我现在在 GORM 工作,遇到了非常复杂的问题。

我的域类名称是用户,通过 GORM 自动映射表名应该是用户,但不允许创建名称为“用户”的表。因为用户是大多数数据库系统中的关键字(我使用的是 PostgresSQL)。

我从 Grails 阅读了 GORM 文档,但我无法找到如何映射表和域类,如果有任何违反命名约定的情况。

或者有没有更好的解决方案来解决这个问题?

create table user (id varchar(20))


ERROR:  syntax error at or near "user"
LINE 1: create table user (id varchar(20))
                     ^
********** Error **********

ERROR: syntax error at or near "user"
SQL state: 42601
Character: 14

【问题讨论】:

    标签: hibernate grails grails-orm grails-2.0


    【解决方案1】:

    最好的解决方案是避免使用保留名称,例如用户。

    但是,如果你不能,那么你可以在映射块中用反引号引用表名。然后,Hibernate 会将这些转换为数据库的任何引用/转义方法。比如:

    static mapping = {
        table "`user`"
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-04-20
      • 2016-10-18
      • 2010-12-12
      • 1970-01-01
      • 2020-05-25
      • 2014-04-28
      • 2011-02-28
      • 1970-01-01
      • 2022-10-24
      相关资源
      最近更新 更多