javax.servlet.ServletException:过滤器执行在Spring Boot中引发了异常

时间:2018-10-22 21:47:30

标签: spring hibernate spring-boot

当我在实体类中实现hashCode()方法时,出现以下错误。那是什么?

  

javax.servlet.ServletException:筛选器执行引发异常     在   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)     在   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)     在   org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)     在   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)     在   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)     在   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)     在   org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130)     在   org.springframework.boot.web.support.ErrorPageFilter.access $ 000(ErrorPageFilter.java:66)     在   org.springframework.boot.web.support.ErrorPageFilter $ 1.doFilterInternal(ErrorPageFilter.java:105)     在   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)     在   org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:123)     在   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)     在   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)     在   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)     在   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)     在   org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)     在   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)     在   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)     在   org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)     在   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)     在   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)     在   org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)     在   org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)     在   org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:868)     在   org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1459)     在   org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)     在   java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)     在   org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)     在java.lang.Thread.run(Thread.java:748)造成原因:   java.lang.StackOverflowError在   org.apache.tomcat.jdbc.pool.StatementFacade $ StatementProxy.invoke(StatementFacade.java:116)     在com.sun.proxy。$ Proxy2212.executeQuery(未知来源)处   org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70)     在   org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:434)     在   org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:186)     在   org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:121)     在   org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:86)     在   org.hibernate.loader.collection.plan.AbstractLoadPlanBasedCollectionInitializer.initialize(AbstractLoadPlanBasedCollectionInitializer.java:88)     在   org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:688)     在   org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:75)     在   org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1991)     在   org.hibernate.collection.internal.AbstractPersistentCollection $ 4.doWork(AbstractPersistentCollection.java:570)     在   org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:252)     在   org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:566)     在   org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:135)     在   org.hibernate.collection.internal.PersistentSet.hashCode(PersistentSet.java:430)     在java.util.Arrays.hashCode(Arrays.java:4146)在   java.util.Objects.hash(Objects.java:128)在   net.fis.fava.model.Group.hashCode(Group.java:115)位于   java.util.HashMap.hash(HashMap.java:339)在   java.util.HashMap.put(HashMap.java:612)位于   java.util.HashSet.add(HashSet.java:220)位于   java.util.AbstractCollection.addAll(AbstractCollection.java:344)在   org.hibernate.collection.internal.PersistentSet.endRead(PersistentSet.java:327)     在   org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollection(CollectionLoadContext.java:234)     在   org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:221)     在   org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:194)     在   org.hibernate.loader.plan.exec.process.internal.CollectionReferenceInitializerImpl.endLoading(CollectionReferenceInitializerImpl.java:154)     在   org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishLoadingCollections(AbstractRowReader.java:249)     在   org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishUp(AbstractRowReader.java:212)     在   org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:133)     在   org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:122)     在   org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:86)     在   org.hibernate.loader.collection.plan.AbstractLoadPlanBasedCollectionInitializer.initialize(AbstractLoadPlanBasedCollectionInitializer.java:88)     在   org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:688)     在   org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:75)     在   org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1991)     在   org.hibernate.collection.internal.AbstractPersistentCollection $ 4.doWork(AbstractPersistentCollection.java:570)     在   org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:252)     在   org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:566)     在   org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:135)     在   org.hibernate.collection.internal.PersistentSet.hashCode(PersistentSet.java:430)     在java.util.Arrays.hashCode(Arrays.java:4146)在   java.util.Objects.hash(Objects.java:128)在   net.fis.model.Activity.hashCode(Activity.java:146)位于   java.util.HashMap.hash(HashMap.java:339)在   java.util.HashMap.put(HashMap.java:612)位于   java.util.HashSet.add(HashSet.java:220)。 。 。 。

1 个答案:

答案 0 :(得分:0)

这也是Entity类的实例:

@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 +
                " }";
    }

}