Jpa 数据库对象的默认名称
我试图找出JPA在没有显式名称集的情况下使用的列名 例如:Jpa 数据库对象的默认名称,jpa,jpa-2.0,specifications,Jpa,Jpa 2.0,Specifications,我试图找出JPA在没有显式名称集的情况下使用的列名 例如: @Entity public class TestType { private Boolean active; private Character testTypeCode; public Boolean getActive() { return active; } public void setActive(Boolean active) { this.a
@Entity
public class TestType {
private Boolean active;
private Character testTypeCode;
public Boolean getActive() {
return active;
}
public void setActive(Boolean active) {
this.active = active;
}
@Id
public Character getTestTypeCode() {
return testTypeCode;
}
public void setTestTypeCode(Character testTypeCode) {
this.testTypeCode = testTypeCode;
}
}
主键列将使用哪个名称,属性“active”将使用哪个列名,以及将使用哪个表名。我正在寻找JPA默认使用的名称的规范。是“2.13数据库对象命名”一章指定了()
本规范要求以下关于
解释引用数据库对象的名称。这些名字
包括表、列和其他数据库元素的名称。
此类名称还包括因默认而产生的名称(例如
从实体名称或列名称中默认的表名称
从字段或属性名称中默认设置)
在您的示例中,表名将是
TestType
,ID列名testTypeCode
,活动列将被调用。还请注意,在SQL标准中,所有列和表名都不区分大小写,尽管有一些反例(例如Unix上的MySQL:表名区分大小写)。据我所知,规范的这一部分并没有说明使用的名称是类或属性/字段的名称。它们只是从中衍生出来的。也许我错了,因为我不是以英语为母语的人。但是,对于主键,规范非常清楚地说明了这一点(11.1.18 Id注释):如果未指定列注释,则假定主键列名是主键属性或字段的名称。
我们在这里讨论默认名称(但可以覆盖)。表名默认为实体名。实体名称如下:@Entity(Name=“EntityName”)
(默认为简单类名)。现在,如果“defaulting from”这个表达让您思考(意思是“派生自”),那么它不应该这样做,因为它会导致一些可移植性问题。谢谢您的澄清!