В проекте со смешанными объектами гибернации XML и аннотаций, который сканируется первым?

#java #hibernate

#java #гибернация

Вопрос:

Мы работаем над проектом с hibernate 4.2.21 со смешанными объектами на основе XML и объектами на основе аннотаций. Вопрос в том, какие объекты сканируются в первую очередь? Другими словами, если EntityA — это объект на основе XML, а EntityB — объект на основе аннотаций. Может ли EntityA иметь свойство типа EntityB?

Комментарии:

1. Я не думаю , что это имеет значение; Hibernate создает модель в памяти, а затем выполняет проверки согласованности после ее загрузки.

Ответ №1:

Вы можете смешивать объекты, отображаемые с помощью аннотаций, и объекты, отображаемые с помощью XML.

Из документации по гибернации (курсив мой):

Вы можете смешивать аннотированные постоянные классы и классические hbm.cfg.xml объявления с одним и тем же SessionFactory. Однако вы можете не объявлять класс несколько раз (будь то аннотированный или через hbm.xml ). Вы
также не можете смешивать стратегии конфигурации (hbm и аннотации) в иерархии сущностей.

Комментарии:

1. Спасибо за объявление, но какие объекты загружаются первыми на основе XML или на основе аннотаций?

2. Похоже, это не задокументировано, могу я спросить, почему вы хотите знать?

3. На самом деле hibernate.mapping.precedence может использоваться в случае, если классы сопоставляются с аннотациями и XML, поэтому это также может повлиять на порядок сканирования.

4. Я работаю над проектом, в котором сопоставление объектов является смешанным. Объекты на основе аннотаций могут иметь свойство типа сущности на основе XML. Но в какой-то момент мне понадобилось, чтобы объект на основе XML имел свойство типа на основе аннотаций, и это не сработало. Я пытался узнать, не сработало ли это, потому что оно не должно работать, или я сделал что-то не так, поэтому мне нужно разобраться.

5. Это должно сработать, возможно, попробуйте отредактировать свой вопрос с учетом проблемы, с которой вы столкнулись