[英]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.