簡體   English   中英

Hibernate 多個@ManyToMany 關聯到同一個實體

[英]Hibernate multiple @ManyToMany associations to the same entity

我有以下情況:

我有一個名為MyOtherEntity的實體,它有一個 type 屬性。 MyEntity僅與基於MyOtherEntity類型的某些MyOtherEntity實體相關聯。

MyEntity class(僅用於演示,未正確建模):

@Data
@Entity
@Table(name = "my_table")
public class MyEntity {

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(
        name = "my_entity_my_other_entity_type1",
        joinColumns = {@JoinColumn(name = "my_entity_id")},
        inverseJoinColumns = {@JoinColumn(name = "my_other_entity_id")}
    )
    private List<MyOtherEntity> myOtherEntityType1;

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(
        name = "my_entity_my_other_entity_type2",
        joinColumns = {@JoinColumn(name = "my_entity_id")},
        inverseJoinColumns = {@JoinColumn(name = "my_other_entity_id")}
    )
    private List<MyOtherEntity> myOtherEntityType2;

    // more fields
}

MyOtherEntity class:

@Data
@Entity
@Table(name = "my_other_entity")
public class MyOtherEntity {

    private String type;

    // more fields
}

一個更詳細的例子:

假設只有 3 種類型的MyOtherEntity ,type1、type2 和 type3。 我的目標是僅MyEntity與 type1 和 type2 的MyOtherEntity實體相關聯。

使用 Hibernate 是否可以實現此功能?

您可以使用@Where 注釋。

@Where(clause = "type = 'tyep1'")
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
    name = "my_entity_my_other_entity_type1",
    joinColumns = {@JoinColumn(name = "my_entity_id")},
    inverseJoinColumns = {@JoinColumn(name = "my_other_entity_id")}
)
private List<MyOtherEntity> myOtherEntityType1;

@Where(clause = "type = 'tyep2'")
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
    name = "my_entity_my_other_entity_type2",
    joinColumns = {@JoinColumn(name = "my_entity_id")},
    inverseJoinColumns = {@JoinColumn(name = "my_other_entity_id")}
)
private List<MyOtherEntity> myOtherEntityType2;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM