Hibernate 5 - 命名策略 - 显式名称 - 大写字母被忽略

时间:2016-09-03 09:27:21

标签: hibernate jpa

我尝试设置JPA映射。由于某些原因,我必须有相同的java变量/表列名称(包括大写字母),但我不能设置休眠。我尝试使用显式列名:

@Type(type="java.lang.Integer")
@Column(name = "nextInvoiceNr")
public int nextInvoiceNr;

并使用隐式映射:

@Type(type="java.lang.Integer")
public int nextInvoiceNr;

这两种方法都创建了没有大写字母的列名 - " nextinvoicenr"。

我还尝试更改添加的hibernate配置:

lConf.setProperty("hibernate.implicit_naming_strategy", "org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl");
lConf.setProperty("hibernate.physical_naming_strategy", "org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl");

但没有成功

1 个答案:

答案 0 :(得分:1)

我刚刚回答了这个问题的very similar question,其中涉及使用Hibernate在列名中使用连字符时出现的错误。这里可能适用的解决方案是使用引号转义列名:

@Type(type="java.lang.Integer")
@Column(name = "\"nextInvoiceNr\"")
public int nextInvoiceNr;

如果您使用的是JPA 1.0,则可以在反引号中转义列名:

@Column(name = "`nextInvoiceNr`")

当然,替代方法是不依赖区分大小写的列名。