我有Play!Framework以jdbc
和Postgresql
作为数据库运行。我想为开发使用启用进化。
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));
有没有办法自动转义表名?
由于
答案 0 :(得分:1)
我不确定是否可能。您可以尝试使用一些常见的转义
像Hibernate一样:@Table(name="`user`")
像JPA2一样:
@Table(name="\"user\"")
对于我自己 - 我从不使用保留字来命名。你永远都会堕落。所以只需使用不同的表名,即使您不想更改类名本身,也可以使用不同的表名对其进行注释:
@Table(name="user_table")
答案 1 :(得分:0)
我不确定你的意思是自动'。演变基本上是提交给数据库的sql命令,因此,postgresql escapes识别的名称也应该是你演变中的有效语法。我没有postgresql专家,但我相信双引号会做你想做的事情:
create table "user" (
id bigserial not null,
name varchar(255),
constraint pk_user primary key (id));