gpt4 book ai didi

java - Hibernate:@ManyToMany 关系中对象集的传递持久性

转载 作者:行者123 更新时间:2023-12-01 16:12:34 25 4
gpt4 key购买 nike

我正在尝试绘制以下内容:

public class Person{
...
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "person_categories", joinColumns = @JoinColumn(name = "personId"), inverseJoinColumns = @JoinColumn(name = "categoryId"))
private Set<Category> categories

...
}

public class Category {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "categoryId")
private Integer id;

@Column(unique = true)
private Sting name

...
}

当我尝试保存 Person 对象时,会插入类别,但会将重复项存储到表中。如何确保每个类别在其表中都是唯一的,同时保持传递持久性?我尝试使名称列唯一,但这只能通过抛出约束错误来帮助。

最佳答案

如果您不重写 hashCode() 和 equals() 以使 Category 类有意义,那么您将在 Set 中获得重复项(如果您一开始就添加重复项) 。如果 name 字段是区分对象的,请尝试:

public int hashCode() {
return name.hashCode();
}

public Object equals (Object o) {
if (o instanceof Category) {
return ((Category)o).name.equals(this.name);
}
return false;
}

关于java - Hibernate:@ManyToMany 关系中对象集的传递持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/484929/

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