玩转义 table 名字的进化
Play evolution escaping table names
我有 Play!Framework 运行 jdbc
和 Postgresql
作为数据库。我想为开发使用启用进化。
Play 似乎不会自动转义 table 名称。例如,当创建一个名为 user
的 table 时,我似乎无法自动创建一个 table,因为 user
是 SQL 中的保留字。
Play 产生这样的进化:
# --- Rev:1,Ups - 4fb5e22
create table user (
id bigserial not null,
name varchar(255),
constraint pk_user primary key (id));
有什么方法可以自动转义 table 名称吗?
谢谢
我不确定 'automatically' 是什么意思。 Evolutions 基本上是提交给数据库的 sql 命令,因此 postgresql 转义已识别的名称也应该是您的 evolutions 中的有效语法。我不是 postgresql 专家,但我相信双引号会满足您的需求:
create table "user" (
id bigserial not null,
name varchar(255),
constraint pk_user primary key (id));
我不确定是否可行。可以尝试使用一些常用的转义
喜欢休眠:
@Table(name="`user`")
喜欢 JPA2:
@Table(name="\"user\"")
对于我自己——我从不使用保留字来命名。你总是会因此而堕落,永远。所以只需使用不同的 table 名称,即使您不想更改 class 名称本身,也可以使用不同的 table 名称对其进行注释:
@Table(name="user_table")
我有 Play!Framework 运行 jdbc
和 Postgresql
作为数据库。我想为开发使用启用进化。
Play 似乎不会自动转义 table 名称。例如,当创建一个名为 user
的 table 时,我似乎无法自动创建一个 table,因为 user
是 SQL 中的保留字。
Play 产生这样的进化:
# --- Rev:1,Ups - 4fb5e22
create table user (
id bigserial not null,
name varchar(255),
constraint pk_user primary key (id));
有什么方法可以自动转义 table 名称吗?
谢谢
我不确定 'automatically' 是什么意思。 Evolutions 基本上是提交给数据库的 sql 命令,因此 postgresql 转义已识别的名称也应该是您的 evolutions 中的有效语法。我不是 postgresql 专家,但我相信双引号会满足您的需求:
create table "user" (
id bigserial not null,
name varchar(255),
constraint pk_user primary key (id));
我不确定是否可行。可以尝试使用一些常用的转义
喜欢休眠:
@Table(name="`user`")
喜欢 JPA2:
@Table(name="\"user\"")
对于我自己——我从不使用保留字来命名。你总是会因此而堕落,永远。所以只需使用不同的 table 名称,即使您不想更改 class 名称本身,也可以使用不同的 table 名称对其进行注释:
@Table(name="user_table")