По соображениям безопасности, наши объекты базы данных oracle обычно принадлежат другой схеме, чем зарегистрированный пользователь. Например. таблицы находятся в xx_core, а пользователь, в который мы вошли, - xx_app_yy.
В моем persistence.xml я определяю файл orm, чтобы я мог указать имя схемы во время развертывания, например:
Затем в xx_schema_orm.xml я могу определить схему-владельца объекта, например :
<persistence-unit-metadata>
<persistence-unit-defaults>
<schema>xx_core</schema>
</persistence-unit-defaults>
</persistence-unit-metadata>
Это отлично работает для таблиц, но я могу Не могу найти эквивалента для последовательностей. Он пытается использовать последовательность без имени схемы, а затем я получаю исключение:
2010-10-14 03:04:05,423:DEBUG could not get next sequence value [select xx_SEQ.nextval from dual] - org.hibernate.util.JDBCExceptionReporter java.sql.SQLException: ORA-02289: sequence does not exist at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
Я попытался установить имя схемы как часть имени последовательности для генератора в xx_schema_orm.xml, но не смог заставить его работать Например:
<sequence-generator name="xx_SEQ_GEN"
sequence-name="xx_core.xx_SEQ"/>
Обходные пути Я могу попробовать: