有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java多通HashCode与Equal实现

我有三个这样的实体:

1。项目:

@Entity
public class Project implements Serializable{

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id", unique=true )
private Long id;

@OneToMany(mappedBy="project", fetch = FetchType.EAGER)
private Set<Collaborator> collaborators = new HashSet<>();

//Getters & Setters

}

2。用户:

@Entity
public class User implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", unique = true, nullable = false)
private Long id;

@OneToMany(mappedBy="user", fetch = FetchType.EAGER)
private Set<Collaborator> collaborators = new HashSet<>(); 

//Getters & Setters
}

3。合作者:

@Entity
public class Collaborator implements Serializable{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "ProjectID" , nullable = true)
private Project project;

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "UserID", nullable = true)
private User user;

//Getters & Setters
}

hashCode&;需要实施平等吗

因为当我用Eclipse自动生成它们时,我会得到一个StackOverFlow Error,这是一个永无止境的循环

任何建议都将不胜感激,谢谢


共 (2) 个答案

  1. # 1 楼答案

    首先,很抱歉我的英语很差,但我相信你的错误是把所有字段都放在了方法equals和hashCode中。您必须只放置“普通”字段,而不是列表和集合

    请尝试这样做,如果解决了这个问题,在回答之后