@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 在创建表时使用带引号的标识符。
关于如何处理这个问题的任何想法......除了重命名字段?
使用 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\"")