【发布时间】:2015-10-21 04:36:37
【问题描述】:
我需要为我的所有数据库对象(如表和约束)添加一个全局前缀,这样当我提取 DDL Schema 时,一切都会很好。
我知道如何在我的 Java 代码中指定约束名称 (as described here)。
我还知道如何为表添加全局前缀as described here。这是我目前在我的项目中实现的。
我不知道如何将相同的全局前缀添加到约束名称。你看,当 Hibernates 创建所有的数据库表和约束时,它会做这样的事情:
Hibernate: alter table ABC_MYTABLE1 add constraint UK_MYTABLE1_COLUMN1 unique (column1)
Hibernate: alter table ABC_MYTABLE1 add constraint UK_MYTABLE1_COLUMN2 unique (column2)
Hibernate: alter table ABC_MYTABLE2 add constraint UK_MYTABLE2_COLUMN1 unique (column1)
Hibernate: alter table ABC_MYTABLE2 add constraint UK_MYTABLE2_COLUMN2 unique (column2)
...
“ABC”是我的全局前缀。注意约束名称是如何缺少前缀的?我本质上需要的是这个:
Hibernate: alter table ABC_MYTABLE1 add constraint ABC_UK_MYTABLE1_COLUMN1 unique (column1)
Hibernate: alter table ABC_MYTABLE1 add constraint ABC_UK_MYTABLE1_COLUMN2 unique (column2)
Hibernate: alter table ABC_MYTABLE2 add constraint ABC_UK_MYTABLE2_COLUMN1 unique (column1)
Hibernate: alter table ABC_MYTABLE2 add constraint ABC_UK_MYTABLE2_COLUMN2 unique (column2)
...
这一次,表名和约束名都有前缀。
前缀字符串必须是可变的,我不能对其进行硬编码,因为我需要能够在配置文件或类似文件中对其进行配置。
我目前的问题是 NamingStrategy 类似乎没有提供任何修改约束名称的方法。我用谷歌搜索了很多,但我发现的只是官方 Hibernate 网站上的票,这可能与这个问题有关,也可能与此问题无关。无论哪种方式,它们仍然是开放票。
有什么解决办法吗?我不希望我的架构以一半的对象/约束丢失必要的前缀而告终。
不得不说,我觉得他们提供一种改变表命名策略的机制有点草率,但完全错过了约束。
【问题讨论】:
-
你使用哪个休眠版本?
-
@javadev: 4.3.8.Final
标签: java hibernate jpa constraints prefix