我正在开发一个带有spring boot的电子图书馆应用程序,它允许用户订购图书(这些数据保存在OrderDetails表中)。每当我尝试为某个用户保存已订购的图书时,都会出现以下异常:
org.hibernate.id.IdentifierGenerationException:尝试从空的一对一属性com.springboot.library.domains.OrderDetails.book中分配id
下面是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
}
Book类
@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类中的book属性,但我不确定如何做到这一点:
除了setOrderDetails
方法需要一个Set<OrderDetails>
,而我只传递了一个,这就是我被卡住的地方
public void setBook(Book book) {
this.book = book;
book.setOrderDetails(this);
}
如果有任何帮助,我将非常感谢:)
https://stackoverflow.com/questions/56743909
复制相似问题