JPA Entiy на синоним вместо таблицы

у меня есть веб-приложение Java EE 5 на основе Seam 2.2 с кучей таблиц, сопоставленных с объектами JPA 1.0 через Hibernate 3.3.3. Во время разработки он работает на Tomcat 6, Oracle 10 XE и Windows 7.

теперь у нас был запрос отдела операций на разделение модели данных на одну схему, являющуюся владельцем всех объектов базы данных (myschema) и одна схема, действующая как пользователь базы данных приложения (myschema_app). Поэтому я сделал следующее:--18-->

  • создать схема myschema_app
  • предоставить права объекта на все необходимые таблицы из myschema (как обычные, так и N:M промежуточные таблицы) и последовательности в зависимости от использования (один или несколько из select, insert, update, delete) к myschema_app
  • объявить частные синонимы в myschema_app чтобы использовать те же имена, что и раньше, и скрывать префикс имени другой схемы
  • изменить свойства hibernate.default_schema для нового имени схемы в persistence.xml
  • изменить пользователь / пароль в определении источника данных Tomcat в context.xml

когда я запускаю приложение, имея hibernate.hbm2ddl.autoзначение validate, я получаю исключение, когда пытается создать EntityManagerFactory говорит мне, что таблица отсутствует. Когда я выполняю инструкцию select непосредственно в инструменте sql с помощью myschema_app подключен, все работает нормально.

я понял, что использование синонима, идущего на другой стол, прозрачно для приложения. Кто-нибудь представляете, что я мог упустить?

2 ответов


Я предполагаю, что hbm2ddl используется специально для таблиц, а не для синонимов, но ваше приложение действительно должно работать так, как если бы таблицы существовали в схеме. Попробуйте удалить параметр hbm2ddl и протестировать приложение.

EDIT: кажется, моя догадка верна:https://forum.hibernate.org/viewtopic.php?p=2438033


начиная с 4.3.0, можно установить hibernate.synonyms=true, чтобы решить вашу проблему с синонимами.

ссылки:

https://github.com/hibernate/hibernate-orm/commit/1df4b2ea3c98c74f3b6bbd42e266ee5c7ad60d27

https://hibernate.atlassian.net/browse/HHH-8183

https://github.com/hibernate/hibernate-orm/pull/508