我只是在学习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(:
创建了持久性单元的实体管理器工厂时,持久提供商的责任是初始化持久性单元的元模型类别的状态。