@Column(name="open")
在hibernate状态下使用sqlserver方言。
[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在创建表时使用带引号的标识符。
除了重命名字段外,还有其他任何处理方法的想法吗?
遇到相同的问题,但表名为Transaction。如果你设定
Transaction
hibernate.globally_quoted_identifiers=true
然后所有数据库标识符将被引用。
在这里找到我的答案 表名称中的特殊字符hibernate给出错误
并在这里找到所有可用的设置 https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/appendices/Configurations.html
虽然找不到更好的文档。
就我而言,该设置位于我的Spring属性文件中。如注释中所述,它也可以位于其他与hibernate相关的配置文件中。
使用Hibernate作为JPA 1.0提供程序,你可以通过将保留的关键字放在反引号内来对其进行转义:
@Column(name="`open`")
这是从Hiberate Core继承的语法:
5.4。SQL带引号的标识符 你可以通过将表名或列名放在映射文档中的反引号中来强制Hibernate在生成的SQL中引用标识符。Hibernate将为SQL方言使用正确的引号样式。通常使用双引号,但是SQL Server使用方括号,而MySQL使用反引号。
<class name="LineItem" table="`Line Item`"> <id name="id" column="`Item Id`"/><generator class="assigned"/></id> <property name="itemNumber" column="`Item #`"/> ... </class>
在JPA 2.0中,语法是标准化的,并且变为:
@Column(name="\"open\"")