Почему в метамодели JPA все поля пусты? - PullRequest
0 голосов
/ 03 июля 2019

Я только изучаю критерии 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 Ответ

1 голос
/ 03 июля 2019

Поля не равны нулю во время выполнения, поскольку реализация JPA устанавливает все эти открытые статические поля в ненулевые значения.

Выдержка из спецификаций (6.2.2 - Начальная загрузка):

Когда создается фабрика менеджера сущностей для единицы сохраняемости, поставщик сохраняемости обязан инициализировать состояние классов метамодели единицы постоянства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...