gpt4 book ai didi

java - 在递归对象上实现 equals 和 hashCode (JPA @ManyToMany)

转载 作者:行者123 更新时间:2023-11-30 06:04:14 25 4
gpt4 key购买 nike

我最近实现了一些带有双向映射的 JPA-Entites,如下例所示。

public class User {
@ManyToMany(...)
private List<Group> groups;

// ...
}

public class Group {
@ManyToMany(...)
private List<User> users;

// ...
}

我还在这两个类上实现了 equals(Object) 和 hashCode() ,包括对每个实体的分配组和分配用户进行比较。

public class User {
public boolean equals(Object obj) {
// ...

Objects.equals(this.groups, obj.groups);

// ...
}
}

public class Group {
public boolean equals(Object obj) {
// ...

Objects.equals(this.users, obj.users);

// ...
}
}

显然,这会以 StackOverflowError 结束,因为如果将用户分配到一个组,equals(Object obj) 会被无限次调用。

对于这种情况是否有最佳实践,或者我应该从 equals(Object obj) 中排除这些集合?

感谢您的帮助:)

最佳答案

在我看来,最佳实践是通过比较两个实体的唯一 ID 来比较它们。用户不会通过进入新组而成为不同的用户。更不用说,通过改变她所属的群体之一。

特定领域的比较可能多种多样,并且应该在单独的比较器中实现。

关于java - 在递归对象上实现 equals 和 hashCode (JPA @ManyToMany),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51698446/

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