2015-08-23 5 views
1

Я использую persistence.xml, чтобы указать настройку отображения в Hibernate. То есть я использую класс EntityManager для получения моих транзакций.Объекты отображения Hibernate не присутствуют в persistence.xml

Теперь у меня есть следующие классы перечислены в моем persistence.xml

<class>test.entity.Course</class> 
<class>test.entity.Semester</class> 
<class>test.entity.Subject</class> 

Также в моем проекте Eclipse, у меня есть еще два класса (Student.java и User.java), которые отмечены в @Entity аннотации, но не является перечисленные в файле persistence.xml.

Но когда я запускаю свой проект, Hibernate фактически отображает эти два класса. Я имею в виду, что он создает таблицы базы данных для этих двух классов (у меня есть hbm2ddl, установленный на auto).

Почему это делается? Не следует ли отображать только файлы, перечисленные в persistence.xml?

+0

Как получить экземпляр EntityManager ? В какой среде работает ваше приложение? –

+0

@JBNizet Через метод 'entityManagerFactory.createEntityManager()'. – Kramer786

ответ

1

По умолчанию в стандарте JPA указано, что в среде сервера приложений рассматриваются все классы, аннотированные с @Entity, независимо от того, указаны ли они в файле persistence.xml или нет. Если вы действительно хотите, чтобы включить только те 3 лиц, упомянутых в persistence.xml, вам необходимо добавить следующие настройки в файл persistence.xml в живучесть-единицы:

<exclude-unlisted-classes>true</exclude-unlisted-classes> 
+0

@OndejM Ты был прав. Теперь я получаю ожидаемое поведение. Благодарю. – Kramer786

-1

Спящий режим может быть сконфигурирован либо с persistence.xml, либо с аннотациями JPA.

+0

Ждать, я использую оба. Так я полагаю, чтобы использовать только один? – Kramer786

+0

Yup, если вам не нужны оба по какой-то причине. Аннотации - рекомендуемый подход, но каждый из них работает. –

+0

Если его просто аннотации, где будут сохраняться настройки соединения, такие как пароль и строка подключения? А также, где бы вы указали значение hbm2ddl? Единственное место, где вы можете разместить их, - это файл 'persistence.xml'. – Kramer786