Lombok.hashCode出现"java.lang.StackOverflowError:null"问题 [英] Lombok.hashCode issue with "java.lang.StackOverflowError: null"

查看:353
本文介绍了Lombok.hashCode出现"java.lang.StackOverflowError:null"问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个表,它们具有一对一的关系,如下所示:

I have two tables has one to one relationship as below:

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {
  @Id
  @GeneratedValue(strategy = GenerationType.TABLE)
  private int id;

  private String name;

  @OneToOne(cascade = CascadeType.ALL)
  @JoinColumn(name = "book_dtail_id")
  private BookDetail bookDetail;
}

@Entity
@Table(name = "book_detail")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BookDetail {
  @Id
  @GeneratedValue(strategy = GenerationType.TABLE)
  private Integer id;

  @Column(name = "number_of_pages")
  private Integer numberOfPages;

  @OneToOne(mappedBy = "bookDetail")
  private Book book;
}

我使用表单输入数据如下

I used a Form to input data as below

@Data
@NoArgsConstructor
@AllArgsConstructor
public class BookForm {
  Book book;
  BookDetail bookDetail;
}

控制器看起来像这样:

String handleNewBook(Model model){
  Book book = new Book();
  BookDetail bookDetail = new BookDetail();
  BookForm bookForm = new BookForm(book, bookDetail);

  model.addAttribute("bookForm", bookForm);
  return "index";
}

String handleSaveBookCreate(BookForm bookForm, Model model){
    bookForm.getBook().setBookDetail(bookForm.getBookDetail());
    bookForm.getBookDetail().setBook(bookForm.getBook());
    bookService.save(bookForm.getBook()));
    return "index";
}

最后是我的表格,如下所示:

Last is my form as below:

<form role="form" action="#" th:object="${bookForm}" th:action="@{/book}" method="POST">
    <input type="text" th:field="*{book.name}"/>
    <input type="text" th:filed="*{bookDetail} == null ? '' : *{bookDetail.numberOfPages}"  placeholder="Enter Book Page Numbers"/>
    <button type="submit">Submit</button>
</form>

一切似乎都没有问题,但是当我"bookService.save(bookForm.getBook());"时执行后,出现如下错误

everything seems no problems, but when I "bookService.save(bookForm.getBook()));" is executed, I got error as below

java.lang.StackOverflowError: null, 
at com.zangland.study.jpa.entity.BookDetail.hashCode(BookDetail.java:17) ~[classes/:na]
at com.zangland.study.jpa.entity.Book.hashCode(Book.java:16) ~[classes/:na]
at com.zangland.study.jpa.entity.BookDetail.hashCode(BookDetail.java:17) ~[classes/:na]
at com.zangland.study.jpa.entity.Book.hashCode(Book.java:16) ~[classes/:na]

与上面的大约100行重复相同....这是否意味着我不能使用Lombok.hashCode?

repeat the same as above about 100 lines.... do this mean that I can't use Lombok.hashCode?

已保存的书:'32768','Spring JPA','32768' 已保存的图书详细信息:"32768","1157"

Saved Book: '32768','Spring JPA','32768' Saved BookDetail: '32768','1157'

推荐答案

您在book和bookdetails之间有一个循环依赖关系.您可能需要从BookDetail中排除book或从Book中排除bookDetail.

You have a circular dependency between book and bookdetails. You probably need to exclude book from BookDetail or bookDetail from Book.

这篇关于Lombok.hashCode出现"java.lang.StackOverflowError:null"问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆