Hibernate是否需要实体中的列名才能工作?

时间:2016-05-31 17:46:49

标签: java entity-framework hibernate

在Hibernate中,我不断收到错误:

ORA-00904: "TABLE_"."COLUMNNAME": invalid identifier

似乎只有我有这样的时间:

@Column(nullable=false)
private String bankID;

而不是例如:

@Column(name = "BANK_ID", nullable=false)
private String bankID;

是否需要为我的实体中的每个字段设置列名?

2 个答案:

答案 0 :(得分:1)

ORA-00904: "TABLE_"."COLUMNNAME": invalid identifier

实际上是一个oracle错误,你可以在这里看到它的原因:ORA-00904: invalid identifier

问题可能在于列的名称设置为" bankID",正如之前的问题所说,从现在开始必须使用双引号引用该列,我可能认为{{1} }是主键/外键,hibernate试图引用它而没有双引号,因此错误。

现在,当您撰写bankID时,您已按照上一个问题的建议:将所有字符置于大写字母中。

老实说,我不知道你是否可以认为这是一个Hibernate错误或意见(也许他们应该在文档中提到它),如果它已经作为一个错误提交并得到修复,那么升级将解决你的问题。

注意

Column(name="BANK_ID",...开头的每个错误都可能是一个oracle错误,您可以在其后面点击数字(ORA),并且您将获得大多数答案。

答案 1 :(得分:0)

可以通过在Configuration上设置NamingStrategyDelegate(或旧版本的NamingStrategy)来自定义。默认命名策略是使用与列名相同的值。要插入下划线,您可以使用ImprovedNamingStrategyDelegate(或ImprovedNamingStrategy)。