【问题标题】:Play evolution escaping table names播放进化转义表名
【发布时间】:2015-10-09 09:35:04
【问题描述】:

我的 Play!Framework 使用 jdbcPostgresql 作为数据库运行。我想为开发使用启用进化。

Play 似乎不会自动转义表名。例如,在创建名为user 的表时,我似乎无法自动创建表,因为user 是SQL 中的保留字。

Play 会产生这样的演变:

# --- Rev:1,Ups - 4fb5e22
create table user (
id                        bigserial not null,
name                      varchar(255),
constraint pk_user primary key (id));

有没有办法自动转义表名?

谢谢

【问题讨论】:

    标签: postgresql playframework ebean playframework-evolutions


    【解决方案1】:

    我不确定是否可能。可以尝试使用一些常见的转义

    像休眠:

    @Table(name="`user`")
    

    像 JPA2:

    @Table(name="\"user\"")
    

    对于我自己——我从不使用保留字来命名。你总是会因此而堕落,永远如此。所以只需使用不同的表名,即使您不想更改类名本身,也可以使用不同的表名对其进行注释:

    @Table(name="user_table")
    

    【讨论】:

      【解决方案2】:

      我不确定您所说的“自动”是什么意思。 Evolutions 基本上是提交到数据库的 sql 命令,因此 postgresql 转义标识的名称也应该是您的 Evolutions 中的有效语法。我不是 postgresql 专家,但我相信双引号会满足你的要求:

      create table "user" (
        id bigserial not null,
        name varchar(255),
      constraint pk_user primary key (id));
      

      【讨论】:

        猜你喜欢
        • 2011-10-04
        • 2011-04-12
        • 1970-01-01
        • 1970-01-01
        • 2019-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多