मैं दो तालिकाओं है के रूप में नीचे एक के बाद एक के लिए संबंध नहीं है:Lombok.hashCode मुद्दा "java.lang.StackOverflowError: अशक्त"
@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;
}
मैं नीचे के रूप में इनपुट डेटा के लिए एक फार्म का इस्तेमाल किया
@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";
}
अंतिम के रूप में नीचे मेरी रूप है:
<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()));" निष्पादित किया जाता है, मैं नीचे
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 उपयोग नहीं कर सकते?
सहेजी गयी पुस्तक: '32768', 'स्प्रिंग जेपीए', '32768' सहेजी गयी BookDetail: '32768', '1157'
मैं यह कैसे कर सकता हूं, यह Lombok विशेषताएं है? – mikezang
आप '@qualsAndHashCode (बहिष्कृत करें =" पुस्तक ") जोड़ सकते हैं। अधिक जानकारी के लिए, [EqualsAndHashCode दस्तावेज़] देखें (https://projectlombok.org/features/EqualsAndHashCode.html)। –