gpt4 book ai didi

java - Jpa ManyToMany 自引用,无需辅助连接表

转载 作者:行者123 更新时间:2023-11-30 02:22:20 24 4
gpt4 key购买 nike

我想告诉实体与自身连接的字段在两个方向上都不是唯一的,但看起来互联网上的所有示例都使用连接表,或者都非常旧。

非规范化表:

PersonId (Pk) | RoleId | ParentRoleId
1 1 NULL
2 1 NULL
3 2 1
4 2 1

Person 实体(具有似乎加载空列表的映射):

@Column
private Long personId;

@Column
private Long roleId;

@Column
private Long parentRoleId;

@ManyToMany
@JoinColumn(name = "parentRoleId", referencedColumnName = "roleId", updatable = false, insertable = false)
private List<Person> personsWithParentRole;

@ManyToMany
@JoinColumn(name = "roleId", referencedColumnName = "parentRoleId", updatable = false, insertable = false)
private List<Person> personsWhoseRoleHasCurrentPersonRoleAsParent;

我想知道是否有办法映射我的案例。我知道这不是最好的拱门或性能最好的拱门,并且可以使用不同的方法,但我只是想知道那个特定的解决方案。这是最复杂情况的简化。

最佳答案

我认为在您的情况下避免使用连接表绝对是一个坏主意。您当前的解决方案是最好的。

我认为你需要这样的东西:

public class Person {
@Id
private long id;

@JoinTable(name = "person_links", joinColumns = {
@JoinColumn(name = "subordinate", referencedColumnName = "id", nullable = false)}, inverseJoinColumns = {
@JoinColumn(name = "manager", referencedColumnName = "id", nullable = false)})
@ManyToMany
private List<Person>subordinates;


@ManyToMany(mappedBy = "subordinates")
private List<Person> managers;

}

关于java - Jpa ManyToMany 自引用,无需辅助连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46444167/

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