为了账号安全,请及时绑定邮箱和手机立即绑定

用JPA创建具有保留字名的字段

用JPA创建具有保留字名的字段

用JPA创建具有保留字名的字段@Column(name="open")使用sqlserver方言和Hibernate。[SchemaUpdate] Unsuccessful: create table auth_session (id numeric(19,0) identity not null, active tinyint null,  creation_date datetime not null, last_modified datetime not null, maxidle int null, maxlive int null, open tinyint null,   sessionid varchar(255) not null, user_id numeric(19,0) not null, primary key (id), unique (sessionid))[SchemaUpdate]    Incorrect syntax near the keyword 'open'.我希望Hibernate在创建表时使用引用的标识符。对如何处理这件事有什么想法.。除了改名外?
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

使用Hibernate作为JPA1.0提供程序,您可以通过将保留关键字封装在Backticks中来转义它:

@Column(name="`open`")

这是从HiberateCore继承的语法:

5.4.SQL引号标识符

您可以强制Hibernate引用生成的SQL中的标识符,方法是将表或列名封装在映射文档的Backticks中。Hibernate将对SQL方言使用正确的引号样式。这通常是双引号,但SQLServer使用括号,MySQL使用Backticks。

<class name="LineItem" table="`Line Item`">
    <id name="id" column="`Item Id`"/><generator class="assigned"/></id>
    <property name="itemNumber" column="`Item #`"/>
    ...</class>

在JPA2.0中,语法是标准化的,成为:

@Column(name="\"open\"")

参考文献

相关问题


查看完整回答
反对 回复 2019-07-11
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

如果您使用如下所示,它应该可以工作。

@Column(name="[order]")private int order;


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 1720 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信