1

我有 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));

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

谢谢

4

2 回答 2

1

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

像休眠一样:

@Table(name="`user`")

像 JPA2:

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

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

@Table(name="user_table")
于 2015-10-09T16:49:29.660 回答
0

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

create table "user" (
  id bigserial not null,
  name varchar(255),
constraint pk_user primary key (id));
于 2015-10-09T10:38:52.033 回答