簡體   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