Я использую службу базы данных dashDB IBM Bluemix для создания облачного приложения. Хорошо, когда я запускаю свое приложение, поскольку свойство hibernate hbm2ddl.auto настроено на обновление, оно обновит мою базу dashDB.DashDB - Проблемы с созданием внешнего ключа с Hibernate
Однако, на консоли появляется следующее сообщение об ошибке:
[ERROR ] HHH000388: Unsuccessful: alter table DASH104411.table1 add constraint
FK_m1vvn3lavq1rjt9oghf0m3x5t foreign key (id_table2) references DASH104411.table2
[ERROR ] DB2 SQL Error: SQLCODE=-1667, SQLSTATE=42858, SQLERRMC=DASH104411.TABLE2;
ORGANIZE BY COLUMN;ENFORCED, DRIVER=4.19.49
Я знаю, что, по умолчанию, таблицы, созданные для dashDB организованы по столбцам и только не применяются ссылочные ограничения поддерживаются. Итак, как мне создать внешние ключи, которые не выполняются спящим режимом? Есть ли способ генерировать таблицы, которые организованы по строкам с помощью спящего режима?
Действительно, hbm2ddl не обладает этой гибкостью. Но я видел, что Hibernate имеет еще один инструмент, который позволяет разработчику создавать собственный DLL-генератор. Эта тема очень поучительна на эту тему: http://stackoverflow.com/questions/438146/hibernate-hbm2ddl-auto-possible-values-and-what-they-do – Islon
Если вы готовы пройти через несколько обручей, u может написать некоторый код, чтобы Hibernate записывал DDL в файл (http://jandrewthompson.blogspot.in/2009/10/how-to-generate-ddl-scripts-from.html). Затем вы редактируете файл вручную и добавляете предложение «организовать_by_row» в таблицу создания таблицы DDL. Теперь запустите этот файл на вашем экземпляре dashDB –