Я работаю над приложением электронной библиотеки с пружинной загрузкой, которое позволяет пользователям заказывать книги (эти данные сохраняются в таблице OrderDetails).Всякий раз, когда я пытаюсь сохранить заказанную книгу для определенного пользователя, она выдает мне следующее исключение:
org.hibernate.id.IdentifierGenerationException: при попытке присвоить идентификатор из нулевого свойства «один к одному» [com.springboot.library.domains.OrderDetails.book]
Вот класс OrderDetails:
@Entity
public class OrderDetails{
@EmbeddedId
private OrderDetailsKey key;
@ManyToOne
@MapsId("bookId")
@JoinColumn(name = "book_id")
private Book book;
@ManyToOne
@MapsId("userId")
@JoinColumn(name = "app_user_id")
private AppUser appUser;
private Integer quantity;
public void setBook(Book book) {
this.book = book;
}
// other getters and setters
}
Класс книги
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", insertable = false, updatable = false)
private Long id;
private String isbn;
private String title;
//some other fields
@OneToMany(mappedBy = "book", cascade = CascadeType.ALL, orphanRemoval = true)
private Set <OrderDetails> orderDetails;
//getters and setters
**strong text**}
Исходя из некоторых похожих примеров, которые я видел, мне нужно инициализировать свойство книги в классе OrderDetails, но я не уверен, как это сделать:
Нечто подобное, за исключением того, что метод setOrderDetails
ожидает Set<OrderDetails>
и я передаю один, и вот где я застрял
public void setBook(Book book) {
this.book = book;
book.setOrderDetails(this);
}
Я был бы очень признателен за любую помощь:)