如何在JPA和Hibernate的列名中使用Space

use*_*648 5 java orm hibernate jpa hibernate-mapping

我已经在我的java DAO类中使用了它在LANG PREF之间包含空格

 @Column(name = "LANG PREF")
  private String langprefid;
Run Code Online (Sandbox Code Playgroud)

一旦我的java类运行,我就会得到

org.hibernate.exception.SQLGrammarException: Incorrect syntax near the keyword 'as'.

有人可以帮我解决这个问题吗?

Vla*_*cea 11

手动转义保留的关键字

如果您正在使用Hibernate本机API,那么您可以使用反引号来转义它们:

@Column(name = "`LANG PREF`")
Run Code Online (Sandbox Code Playgroud)

如果您使用的是JPA,则可以使用双引号进行转义:

@Column(name = "\"LANG PREF\"")
Run Code Online (Sandbox Code Playgroud)

自动转义保留的关键字

如果要自动scape保留关键字,可以设置为true特定于Hibernate的hibernate.globally_quoted_identifiers配置属性:

<property
    name="hibernate.globally_quoted_identifiers"
    value=true"
/>
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请查看此文章.