java - 使用 ImprovedNamingStrategy 创建表时出错

标签 java spring hibernate postgresql spring-mvc

我的 pojo 看起来像这样:

@Entity
@Table(name = "USERS")
public class User {

当我将名称保留在那里时,一切正常, hibernate sql 日志:

 create table users (id int8 not null, username varchar(255), primary key (id))

当我删除注释时,我得到:

Hibernate: create table user (id int8 not null, username varchar(255), primary key (id))
19:24:43 [localhost-startStop-23] ERROR o.h.tool.hbm2ddl.SchemaExport - HHH000389: Unsuccessful: create table user (id int8 not null, username varchar(255), primary key (id))
19:24:43 [localhost-startStop-23] ERROR o.h.tool.hbm2ddl.SchemaExport - ERROR: syntax error at or near "user" Position: 14

我正在尝试使用它,因为它在我的 xml 中定义:

<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" />

有什么建议吗,为什么命名策略不起作用?

最佳答案

默认表名 USER 是保留关键字。在这种情况下,您必须明确指定 name 以便为其添加必要的转义:

@Entity
@Table(name = "`USER`")
public class User { ... }

关于java - 使用 ImprovedNamingStrategy 创建表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13688645/

相关文章:

spring - @Component @Scope ("singleton") 公共(public)类 BootStrapper 实现 ApplicationListener<ContextStartedEvent> {

hibernate - 使用 JBoss 7.1.1 自定义 Hibernate 持久性提供程序

java - 父子持久化中生成parent的ID

java - 带数组的平均值和标准差计算器

java - 如何在 Android 对话框的 XML 布局文件中指定正确的对话框大小?

java - pig 类型转换/数据类型

java - MassIndexer.createIndexer() 在索引多个实体类型时卡住

java runtime.exec() 不能在 tomcat 上运行

java - 如何使用 Spring Boot 防止危险 Controller 包含在生产配置文件中?

java - JUnit 和 Spring : Cannot find persistence. xml - 但它确实存在