为什么在JPA元模型中所有字段都为空?

时间:2019-07-03 11:09:04

标签: java jpa java-ee criteria

我正在学习JPA标准和元模型。我发现以下元模型示例:

@StaticMetamodel( Person.class )
public class Person_ {
    public static volatile SingularAttribute<Person, Long> id;
    public static volatile SingularAttribute<Person, String> name;
    public static volatile SingularAttribute<Person, Integer> age;
    public static volatile SingularAttribute<Person, Address> address;
    public static volatile SetAttribute<Person, Order> orders;
}

此元模型的所有字段为空。因此,任何人都可以在以下示例中解释JPA提供程序如何获取字段名称:

criteria.where(builder.equal( personRoot.get( Person_.age ), 50));

1 个答案:

答案 0 :(得分:1)

这些字段在运行时不是null,因为JPA实现将所有这些公共静态字段设置为非null值。

摘录自规范(6.2.2-自举):

  

创建持久性单元的实体管理器工厂时,持久性提供者有责任初始化持久性单元的元模型类的状态。