为什么JPA metamodel中的所有字段均为无效



我只是在学习JPA标准和metamodels。我找到了以下元模型的示例:

@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));

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

摘自规格(6.2.2 -boottrapping(:

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

最新更新