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

我试图找出JPA在没有显式名称集的情况下使用的列名

例如:

@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”这个表达让您思考(意思是“派生自”),那么它不应该这样做,因为它会导致一些可移植性问题。谢谢您的澄清!