Matelutex
Matelutex

Reputation: 2220

Spring Boot Hibernate JPA @OneToOne Bidirectional StackOverflowError

My entities:

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
    @Table(name = "framework") //this table doesn't have any FK to SortingType table
    public class Framework extends BaseEntity {
    
    @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
    
    //@JsonManagedReference
        @OneToOne(mappedBy = "framework", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        private FrameworkSortingType sortingType;
    
    }
    
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
    @Table(name = "sorting_type") //this table has FK to framework table framework_id
    public class FrameworkSortingType extends BaseEntity {
    
        private static final long serialVersionUID = 1L;
    
        @Id
        @Column(name = "id")
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
    
    //    @JsonBackReference
    //    @OneToOne
    //    @JoinColumn(name = "framework_id", unique = true)
        @OneToOne(fetch = FetchType.LAZY)
        @MapsId
        private Framework framework;
    }

Error:

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.StackOverflowError
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1053)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)

...


Caused by: java.lang.StackOverflowError: null
    at com.ihsmarkit.environment.edp.model.SortingType.hashCode(SortingType.java:11)
    at com.ihsmarkit.environment.edp.model.FrameworkSortingType.hashCode(FrameworkSortingType.java:11)
    at com.ihsmarkit.environment.edp.model.Framework.hashCode(Framework.java:14)
    at com.ihsmarkit.environment.edp.model.FrameworkSortingType.hashCode(FrameworkSortingType.java:11)
    at com.ihsmarkit.environment.edp.model.Framework.hashCode(Framework.java:14)
    at com.ihsmarkit.environment.edp.model.FrameworkSortingType.hashCode(FrameworkSortingType.java:11)
    at com.ihsmarkit.environment.edp.model.Framework.hashCode(Framework.java:14)
    at com.ihsmarkit.environment.edp.model.FrameworkSortingType.hashCode(FrameworkSortingType.java:11)
    at com.ihsmarkit.environment.edp.model.Framework.hashCode(Framework.java:14)
    at com.ihsmarkit.environment.edp.model.FrameworkSortingType.hashCode(FrameworkSortingType.java:11)
    at com.ihsmarkit.environment.edp.model.Framework.hashCode(Framework.java:14)
    at com.ihsmarkit.environment.edp.model.FrameworkSortingType.hashCode(FrameworkSortingType.java:11)

I tried many options, many ways to solve my problem... without success. Where is the problem?

Upvotes: 0

Views: 650

Answers (1)

Matelutex
Matelutex

Reputation: 2220

I solved my problem by: adding: @EqualsAndHashCode(exclude="frameworkSortingType") and @JsonManagedReference and @JsonBackReference

Upvotes: 1

Related Questions