第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Hibernate復(fù)合鍵和重疊字段 - 如何避免列重復(fù)

Hibernate復(fù)合鍵和重疊字段 - 如何避免列重復(fù)

絕地?zé)o雙 2022-06-30 10:23:25
我面臨一個關(guān)于如何管理特定模型的映射的問題。這是一個多租戶應(yīng)用程序,我們已經(jīng)選擇在每個實體中包含“tenant_id”,因此我們不必每次需要獲取實體時都進(jìn)行聯(lián)合(實際上,這是我的問題的根源...)。模型如下:+--------------------+   +---------------+|        Book        |   |    Author     |+--------------------+   +---------------+| id (pk)            |   | id (pk)       || tenant_id (pk)(fk) |   | tenant_id (pk || author_id (fk)     |   | name          || title              |   +---------------++--------------------+如您所見,tenant-id 在每個實體中,并且是主鍵的一部分。我們使用@IdClass 來管理復(fù)合鍵。這是代碼:    @Data    public class TenantAwareKey implements Serializable {        private UUID id;        private Integer tenantId;    }    @IdClass(TenantAwareKey.class)    @Entity    @Table(name = "BOOK")    @Data    public class Book {        @Id        @GeneratedValue        @Column(name = "ID")        private UUID id;        @Id        @Column(name = "TENANT_ID")        private Integer tenantId;        private String title;        @ManyToOne        @JoinColumns(            value = {                @JoinColumn(referencedColumnName = "id", name = "author_id"),                @JoinColumn(referencedColumnName = "tenant_id", name = "tenant_id", insertable = false, updatable = false)            })        private Author author;       }    @IdClass(TenantAwareKey.class)    @Entity    @Data    public class Author {        @Id        @GeneratedValue        @Column(name = TenantAwareConstant.ENTITY_ID_COLUMN_NAME)        private UUID id;        @Id        @Column(name = TenantAwareConstant.TENANT_ID_COLUMN_NAME)        private Integer tenantId;        private String name;    }如果我不嘗試“共同化”tenant_id 列,我設(shè)法使其工作,當(dāng)我只有一個具有此tenant_id 的外鍵時可以接受,但隨著外鍵數(shù)量的增加越來越少,導(dǎo)致添加每次都有一個tenant_id 列,重復(fù)信息和破壞記憶......經(jīng)過一番挖掘,我在 Hibernate 中發(fā)現(xiàn)了一個未解決的問題:https ://hibernate.atlassian.net/browse/HHH-6221多年來一直沒有修復(fù)...所以,我的問題是:您是否遇到過這樣的映射,當(dāng)我有一個與主鍵共享字段的外鍵時,是否有避免重復(fù)列的解決方案?
查看完整描述

1 回答

?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊

如此處所述,您可以通過對列 id_tenant 使用 @JoinColumnOrFormula 來繞過驗證。

您應(yīng)該像這樣映射作者的關(guān)聯(lián):

    @JoinColumnsOrFormulas(
        value = {
                @JoinColumnOrFormula(column = @JoinColumn(referencedColumnName = "id", name = "author_id")),
                @JoinColumnOrFormula(formula = @JoinFormula(referencedColumnName = "tenant_id", value = "tenant_id"))
        })


查看完整回答
反對 回復(fù) 2022-06-30
  • 1 回答
  • 0 關(guān)注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號