我尝试设置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");
但没有成功
答案 0 :(得分:1)
我刚刚回答了这个问题的very similar question,其中涉及使用Hibernate在列名中使用连字符时出现的错误。这里可能适用的解决方案是使用引号转义列名:
@Type(type="java.lang.Integer")
@Column(name = "\"nextInvoiceNr\"")
public int nextInvoiceNr;
如果您使用的是JPA 1.0,则可以在反引号中转义列名:
@Column(name = "`nextInvoiceNr`")
当然,替代方法是不依赖区分大小写的列名。