gpt4 book ai didi

java - Hibernate:单个表中的多个@ManyToMany 关系

转载 作者:搜寻专家 更新时间:2023-11-01 03:47:20 24 4
gpt4 key购买 nike

我有一个项目,其中使用 Hibernate 来管理实体。两个表之间可以存在多个@ManyToMany 关系。所以基本上我有这样的代码:

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "movies_screenplay_authors",
joinColumns = @JoinColumn(name = "movie_id", nullable = false, updatable = false),
inverseJoinColumns = @JoinColumn(name = "staff_id", nullable = false, updatable = false))
private Set<Staff> screenplayAuthors = Sets.newHashSet();

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "movies_story_authors",
joinColumns = @JoinColumn(name = "movie_id", nullable = false, updatable = false),
inverseJoinColumns = @JoinColumn(name = "staff_id", nullable = false, updatable = false))
private Set<Staff> storyAuthors = Sets.newHashSet();

现在,我想将这些关系存储在一个表中,并添加一些描述关系类型的列。所以基本上,我想要这样的东西(使用伪代码):

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "movies_staff",
joinColumns = @JoinColumn(name = "movie_id", nullable = false, updatable = false),
inverseJoinColumns = @JoinColumn(name = "staff_id", nullable = false, updatable = false),
joinCriteria = @JoinCriteria(columnName = "staff_type", value = StaffType.SCREENPLAY_AUTHOR, enumType = EnumType.STRING))
private Set<Staff> screenplayAuthors = Sets.newHashSet();

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "movies_staff",
joinColumns = @JoinColumn(name = "movie_id", nullable = false, updatable = false),
inverseJoinColumns = @JoinColumn(name = "staff_id", nullable = false, updatable = false),
joinCriteria = @JoinCriteria(columnName = "staff_type", value = StaffType.STORY_AUTHOR, enumType = EnumType.STRING))
private Set<Staff> storyAuthors = Sets.newHashSet();

在 Hibernate 或 Java 世界的任何地方,这甚至可能吗?

最佳答案

您可以在每个@JoinTable 注释之后添加如下内容:

@Fetch(FetchMode.SUBSELECT)

这就是全部。

关于java - Hibernate:单个表中的多个@ManyToMany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43215036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com