gpt4 book ai didi

java - Hibernate @ManyToMany 有 2 个不必要的列

转载 作者:行者123 更新时间:2023-12-02 02:45:31 25 4
gpt4 key购买 nike

我有两个处于 @ManyToMany 关系的实体,我希望通过它们的 ID 链接它们。

一个用户可以是多个任务的管理者,一个任务可以有一个或多个管理者,非常简单。

因此,我使用以下属性定义了我的实体:

@Entity
@Table(name = "task")
public class TaskEntity {
@Id
@Column(unique = true, name="task_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "user_task")
private Set<UserEntity> validators = new HashSet<>(0);

// Getters & setters
}

还有

@Entity
@Table(name = "\"user\"")
public class UserEntity {
@Id
@Column(unique = true, name = "user_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "user_task")
private Set<TaskEntity> tasksToValidate = new HashSet<>(0);

// Getters & setters
}

Hibernate 自动生成我的表,并且由于某种原因 user_task4 列:UserEntity 的 ID、管理员的 ID 、TaskEntity 的 ID 和要管理的任务的 ID。但正如您所看到的,这些是相同值对。

如何告诉 Hibernate 我只想保留 UserEntity 的 ID 和 TaskEntity 的 ID?

最佳答案

您具有双向多对多关系。您必须将一侧标记为父侧,将另一侧标记为子侧。为此,您必须在父端使用 mappedBy

有关使用多对多的最佳方法,请参阅这篇文章:https://vladmihalcea.com/the-best-way-to-use-the-manytomany-annotation-with-jpa-and-hibernate/

关于java - Hibernate @ManyToMany 有 2 个不必要的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44624866/

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