JPA:有没有办法为约束名称添加全局前缀?
JPA: Is there any way to add a global prefix to constraint names?
我需要为我的所有数据库对象添加一个全局前缀,例如 tables 和约束,这样当我提取 DDL 模式时,一切都会很好和适当。
我知道如何在我的 Java 代码中指定约束名称 (as described here)。
我也知道如何为 tables 添加全局前缀,as described here。这是我目前在我的项目中实现的。
我不知道如何将相同的全局前缀添加到约束名称。你看,当 Hibernates 创建所有数据库 tables 和约束时,它会做这样的事情:
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)
...
这次 table 和约束名称都有前缀。
前缀字符串必须是可变的,我不能对其进行硬编码,因为我需要能够在配置文件或类似文件中对其进行配置。
我目前的问题是 NamingStrategy 类 似乎没有提供任何修改约束名称的方法。我在谷歌上搜索了很多,但我只找到了 Hibernate 官方网站上的票证,这可能与这个问题有关,也可能无关。无论哪种方式,它们仍然是公开票。
有什么解决办法吗?我不希望我的架构以我的一半 objects/constraints 缺少必要的前缀而告终。
我不得不说,我觉得他们提供一种机制来改变 table 的命名策略有点草率,但完全错过了约束。
当 FK 名称位于命名策略界面之一时(请参阅 details here),使用 Hibernate 5.0(或 6?)似乎会很容易。
我需要为我的所有数据库对象添加一个全局前缀,例如 tables 和约束,这样当我提取 DDL 模式时,一切都会很好和适当。
我知道如何在我的 Java 代码中指定约束名称 (as described here)。
我也知道如何为 tables 添加全局前缀,as described here。这是我目前在我的项目中实现的。
我不知道如何将相同的全局前缀添加到约束名称。你看,当 Hibernates 创建所有数据库 tables 和约束时,它会做这样的事情:
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)
...
这次 table 和约束名称都有前缀。
前缀字符串必须是可变的,我不能对其进行硬编码,因为我需要能够在配置文件或类似文件中对其进行配置。
我目前的问题是 NamingStrategy 类 似乎没有提供任何修改约束名称的方法。我在谷歌上搜索了很多,但我只找到了 Hibernate 官方网站上的票证,这可能与这个问题有关,也可能无关。无论哪种方式,它们仍然是公开票。
有什么解决办法吗?我不希望我的架构以我的一半 objects/constraints 缺少必要的前缀而告终。
我不得不说,我觉得他们提供一种机制来改变 table 的命名策略有点草率,但完全错过了约束。
当 FK 名称位于命名策略界面之一时(请参阅 details here),使用 Hibernate 5.0(或 6?)似乎会很容易。