When I implement the hashCode() method in Entity classes, I get the following error. What 's that ?
javax.servlet.ServletException: Filter execution threw an exception at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130) at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66) at org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:105) at org.springframework.web.filter.OncePerRequestFilter.d oFilter(OncePerRequestFilter.java:107) at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:123) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:3 42) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.StackOverflowError at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:116) at com.sun.proxy.$Proxy2212.executeQuery(Unknown Source) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.ja va:70) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:434) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:186) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:121) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:86) at org.hibernate.loader.collection.plan.AbstractLoadPlanBasedCollectionInitializer.initialize(AbstractLoadPlanBasedCollectionInitializer.java:88) at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:688) at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:75) at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1991) at org.hib ernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:570) at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:252) at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:566) at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:135) at org.hibernate.collection.internal.PersistentSet.hashCode(PersistentSet.java:430) at java.util.Arrays.hashCode(Arrays.java:4146) at java.util.Objects.hash(Objects.java:128) at net.fis.fava.model.Group.hashCode(Group.java:115) at java.util.HashMap.hash(HashMap.java:339) at java.util.HashMap.put(HashMap.java:612) at java.util.HashSet.add(HashSet.java:220) at java.util.AbstractCollection.addAll(AbstractCollection.java:344) at org.hibernate.collection.internal.PersistentSet.endRead(PersistentSet.java:327) at org.hibernate.engine.loa ding.internal.CollectionLoadContext.endLoadingCollection(CollectionLoadContext.java:234) at org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:221) at org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:194) at org.hibernate.loader.plan.exec.process.internal.CollectionReferenceInitializerImpl.endLoading(CollectionReferenceInitializerImpl.java:154) at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishLoadingCollections(AbstractRowReader.java:249) at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishUp(AbstractRowReader.java:212) at org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:133) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:122) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBased Loader.executeLoad(AbstractLoadPlanBasedLoader.java:86) at org.hibernate.loader.collection.plan.AbstractLoadPlanBasedCollectionInitializer.initialize(AbstractLoadPlanBasedCollectionInitializer.java:88) at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:688) at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:75) at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1991) at org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:570) at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:252) at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:566) at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCo llection.java:135) at org.hibernate.collection.internal.PersistentSet.hashCode(PersistentSet.java:430) at java.util.Arrays.hashCode(Arrays.java:4146) at java.util.Objects.hash(Objects.java:128) at net.fis.model.Activity.hashCode(Activity.java:146) at java.util.HashMap.hash(HashMap.java:339) at java.util.HashMap.put(HashMap.java:612) at java.util.HashSet.add(HashSet.java:220) . . . . .
This is also an instance of the Entity class:
@Entity
@Table(name = "TBL_ACTIVITY", uniqueConstraints = { @UniqueConstraint(columnNames = "ROLE", name = "ROLE_UN") })
public class Activity implements Serializable, Comparable<Activity> {
private static final long serialVersionUID = 2312346871583335007L;
private Long activityId;
private String role;
private String description;
private Activity parent;
private Set<Group> groups = new HashSet<>(0);
private Set<Activity> children = new HashSet<>(0);
public Activity() {}
public Activity(String role, String description) {
this.role = role;
this.description = description;
}
public Activity(String role, String description, Activity parent) {
this.role = role;
this.description = description;
this.parent = parent;
}
public Activity(String role, String description, Activity parent, Set<Group> groups, Set<Activity> children) {
this.role = role;
this.description = description;
this.parent = parent;
this.groups = groups;
this.children = children;
}
@Id
@SequenceGenerator(name = "FIS_SEQ", sequenceName = "FIS_SEQ")
@GeneratedValue(generator = "FIS_SEQ")
@Column(name = "ACTIVITY_ID", nullable = false, unique = true, precision = 19)
public Long getActivityId() {
return activityId;
}
public void setActivityId(Long activityId) {
this.activityId = activityId;
}
@Column(name = "ROLE", nullable = false, length = 100)
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Column(name = "DESCRIPTION", length = 100)
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PARENT_ID")
public Activity getParent() {
return parent;
}
public void setParent(Activity parent) {
this.parent = parent;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "parent")
public Set<Activity> getChildren() {
return children;
}
public void setChildren(Set<Activity> children) {
this.children = children;
}
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH} ,fetch = FetchType.LAZY, mappedBy = "activities")
public Set<Group> getGroups() {
return groups;
}
public void setGroups(Set<Group> groups) {
this.groups = groups;
}
@Override
public int compareTo(Activity o) {
return Integer.compare(Integer.valueOf(String.valueOf(this.activityId)), Integer.valueOf(String.valueOf(o.getActivityId())));
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Activity activity = (Activity) o;
return Objects.equals(activityId, activity.activityId) &&
Objects.equals(role, activity.role) &&
Objects.equals(description, activity.description) &&
Objects.equals(parent, activity.parent) &&
Objects.equals(groups, activity.groups) &&
Objects.equals(children, activity.children);
}
@Override
public int hashCode() {
return Objects.hash(activityId, role, description, parent, groups, children);
}
@Override
public String toString() {
return "Activity { " +
"activityId = " + activityId +
", role = '" + role + '\'' +
", description = '" + description + '\'' +
", parent = " + parent +
", groups = " + groups +
", children = " + children +
" }";
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.