繁体   English   中英

JPA:有什么方法可以向约束名称添加全局前缀吗?

[英]JPA: Is there any way to add a global prefix to constraint names?

我需要为所有数据库对象(如表和约束)添加一个全局前缀,以便在提取DDL Schema时一切正常。

我知道如何在Java代码中指定约束名称( 如此处所述 )。

我还知道如何向表添加全局前缀, 如此处所述 这是我目前在我的项目中实现的。

我不知道的是如何将相同的全局前缀添加到约束名称。 您会看到,当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类似乎没有提供任何方式来修改约束名称。 我已经在Google上进行了很多搜索,但是我发现的只是Hibernate官方网站上的门票,这可能与该问题无关。 无论哪种方式,他们仍然是公开票。

有什么解决办法吗? 我不希望我的架构最终导致一半的对象/约束缺少必要的前缀。

我不得不说,我发现它们提供了一种更改表的命名策略的机制,但是有点草率,但是完全错过了约束。

看起来会很容易与Hibernate 5.0(或6?)做的时候FK的名字将出现在命名策略接口之一(见详情这里 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM