hibernate 4 - sessionFactory.addPackage - аналог конфигурационного файла?

Я думаю, что в Hibernate 3 был ключ свойства hibernate.packagesToScan
, который можно было установить на уровне фабрики сеансов в hibernate.cfg.xml.
Изменен ли этот ключ в Hibernate 4, и если да, то каков его соответствующий ключ?

Я использую финальную версию 4.3.8.


person peter.petrov    schedule 22.01.2015    source источник


Ответы (1)


В свойствах спящего режима вам нужно:

<property name="hibernate.archive.autodetection" value="class, hbm" />

В файле persistence.xml вам нужно:

<exclude-unlisted-classes>false</exclude-unlisted-classes>
person Vlad Mihalcea    schedule 22.01.2015
comment
Могу ли я просто обойтись без использования persistence.xml и JPA соответственно? См. также эти 2 связанных вопроса, вы лучше поймете, чего я пытаюсь достичь: stackoverflow.com/questions/28107513/ stackoverflow.com/questions/28097847/ - person peter.petrov; 23.01.2015
comment
Сначала попробуйте использовать свойство hibernate. Все должно быть в порядке, даже если у вас нет файла persistence.xml. - person Vlad Mihalcea; 23.01.2015
comment
Вы имеете в виду, что я поместил это в hibernate.cfg.xml? Я в порядке даже с программным вызовом addPackage, моя главная проблема заключается в том, что Hibernate на самом деле не распознает мои постоянные классы даже в этом случае, я не могу создать простой Criteria и выполнить на нем list (я получаю пустой список обратно?!). +1 за попытку помочь. - person peter.petrov; 23.01.2015
comment
Кстати, основываясь на некоторых исследованиях, которые я провел, я думаю, что hibernate.packagesToScan — это специфичная для Spring вещь. Я не использую Spring в этом проекте, поэтому это не помогает. - person peter.petrov; 23.01.2015
comment
Он должен находиться в файле hibernate.cfg.xml. Если вы получаете пустой список, это потому, что у вас нет данных. Если вы предоставите класс, который не является сущностью Hibernate, вы получите исключение, а не пустой список. - person Vlad Mihalcea; 23.01.2015
comment
У меня есть данные, потому что, если я делаю session.createSQLQuery, а не session.createCriteria, и запрашиваю ту же таблицу (используя 1-й подход), она работает нормально и возвращает около 100 записей. - person peter.petrov; 23.01.2015
comment
Убедитесь, что таблица сущностей соответствует той, которую вы использовали в SQL-запросе. - person Vlad Mihalcea; 23.01.2015
comment
Ну, я так и сделал, он называется Category, базовая СУБД — MySQL. В любом случае спасибо, я буду продолжать искать решение, я уверен, что это что-то простое, чего мне здесь не хватает. - person peter.petrov; 23.01.2015
comment
Кроме того, у меня включено ведение журнала SQL, обратите внимание, что когда я использую Criteria, спящий режим вообще не генерирует никакого SQL для СУБД. Понятия не имею почему. И когда я использую createSQLQuery, я вижу, что select * from... сгенерирован. - person peter.petrov; 23.01.2015
comment
Это действительно странно. Обычно вы получаете исключение, когда объект не разрешен. Я не слышал, чтобы SQL вообще не генерировался. - person Vlad Mihalcea; 23.01.2015