Java 如何在JPA和Hibernate中使用列名中的空格

Java 如何在JPA和Hibernate中使用列名中的空格,java,hibernate,jpa,orm,hibernate-mapping,Java,Hibernate,Jpa,Orm,Hibernate Mapping,我已经在我的java DAO类中使用了,该类包含LANG PREF之间的空格 @Column(name = "LANG PREF") private String langprefid; 一旦我的java类运行,我就会 org.hibernate.exception.sqlgrammareexception:关键字“as”附近的语法不正确。 有人能帮我解决这个问题吗?将您的列名更改为LANG\u PREF 然后使用 手动转义保留关键字 如果您使用的是Hibernate本机API,则可以使

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

 @Column(name = "LANG PREF")
  private String langprefid;
一旦我的java类运行,我就会

org.hibernate.exception.sqlgrammareexception:关键字“as”附近的语法不正确。


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

将您的列名更改为
LANG\u PREF
然后使用

手动转义保留关键字 如果您使用的是Hibernate本机API,则可以使用backticks对其进行转义:

@Column(name = "`LANG PREF`")
如果您使用的是JPA,则可以使用双引号转义:

@Column(name = "\"LANG PREF\"")
自动转义保留关键字 如果要自动替换保留关键字,可以将特定于Hibernate的配置属性设置为
true

<property
    name="hibernate.globally_quoted_identifiers"
    value=true"
/>

您可以将代码更改为

import javax.persistence.Column;
@Column(name = "LANG_PREF")
private String langprefid;

救了我一天!!谢谢您应该更改列本身的名称。在列名中使用空格是不好的做法。
import javax.persistence.Column;
@Column(name = "LANG_PREF")
private String langprefid;