2016-09-05 2 views
2

У меня есть приложение, запущенное на данный момент (без проблем) на JBoss 6, которое я пытаюсь обновить для работы на WildFly 10.1. Большая часть этого обновления идет хорошо. Однако обновление с Hibernate 3.4 (на JBoss 6) до Hibernate 5.1 (на WildFly 10.1) вызывает несколько проблем.hibernate.hbm2ddl.auto value = "update" проблема с миграцией Hibenate от 3.4 до 5.1

В частности, в моем persistence.xml, я включаю следующее свойство.

ОБРАТИТЕ ВНИМАНИЕ: Я НЕ произвожу какие-либо схемы или другие изменения БД в рамках обновления. Кроме того, я указываю на тот же экземпляр базы данных, который был успешно запущен под экземпляром JBoss 6/Hibernate 3.4. Поэтому я уверен, что включение этого свойства не должно иметь никакой фактической работы/обновления для первого запуска с версией WildFly 10.1/Hibernate 5.1.

Однако включение этого свойства в 1) ошибочно определяет, что ему необходимо делать обновления, и 2) не удается сделать это успешно. Это приводит к следующей трассировки стека:

Failed to start service jboss.persistenceunit."app.ear#PU": org.jboss.msc.service.StartException in service jboss.persistenceunit."PU": javax.persistence.PersistenceException: [PersistenceUnit: PU] Unable to build Hibernate SessionFactory 
     ... 
     Caused by: javax.persistence.PersistenceException: [PersistenceUnit: PU] Unable to build Hibernate SessionFactory 
     ... 
     Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [create index company_id_index on APPROVER (COMPANY_ID)] 
     ... 
     Caused by: org.postgresql.util.PSQLException: ERROR: relation "company_id_index" already exists 

Опять же, таблица и индекс в вопросе уже существует (как подтверждено окончательной ошибкой).

Hibernate теперь больше не чувствителен к регистру (COMPANY_ID_INDEX отличается от company_id_index)?

Если да, то как я могу настроить его так, чтобы он не чувствителен к регистру, как это было (Postgres по умолчанию все это ниже ....)

ТИА!

ответ

1

Doh! Лицевая ладонь! Недавно я обнаружил, что подобные ошибки также возникали в связи с созданием индекса hbm2ddl с Hibernate 3.4/JBoss 6, поскольку я теперь испытываю Hibernate 5.1/Wildfly 10.1; однако они НЕ предотвращали успешный запуск модуля сохранения. По сути, они были только тонко подавлены. Я не уверен, что это ожидаемое изменение, связанное с версиями Hibernate или нет, поскольку они предотвращают его запуск в Hibernate 5.1/Wildfly 10.1?

Основная проблема здесь заключалась в том, что имена индексов должны быть уникальными по всей схеме в Postgres. Таким образом, для нескольких объектов, каждый из которых имеет FK для столбца COMPANY_ID, каждый должен иметь уникальное имя для индекса. Индексы - это отношения в Postgres (управляющие уникальным по требованию схемы).

Благодарим вас за предложения и извинения за путаницу.

Смежные вопросы