Не, няма начин да го направите веднага. Заобикалял съм го в миналото, използвайки следния - доста ангажиран - подход:
- Създайте своя собствена анотация,
@TableSpec
който има таблично пространство и други необходими атрибути. - Разширете
org.hibernate.cfg.Configuration
и замениgetTableMappings()
за връщане на декориранаTable
обекти (виж по-долу). - Разширете
org.hibernate.mapping.Table
и замениsqlCreateString()
и / илиsqlAlterStrings()
за добавяне на спецификация за таблично пространство (и допълнителни настройки, ако има такива). - Вместо да използвате инструмента hbm2ddl (или ant задача), напишете своя собствена, която ще създаде вашата
Configuration
обект, обработва всичките ви клас файлове, събирайки и интерпретирайки вашия@TableSpec
анотации и извикване наConfiguration.generateSchemaCreationScript()
илиgenerateSchemaUpdateScript()
за генериране на действителен DDL.
Както казах, по-скоро ангажирано :-) Като алтернатива, ако ВСИЧКИ ваши нанесени таблици използват едно и също таблично пространство, можете да разширите диалекта на Oracle, който използвате, и да замените getTableTypeString()
за да върнете вашата спецификация за таблично пространство. Въпреки че това е грозен хак (тъй като първоначалната цел на tableTypeString е да предостави тип на MySQL машина), той работи и със сигурност е много по-бърз и лесен от горния подход.