【发布时间】:2019-06-24 21:02:44
【问题描述】:
我正在开发一个带有 spring boot 的电子图书馆应用程序,它允许用户订购书籍(这些数据保存在 OrderDetails 表中)。每当我尝试为某个用户保存订购的书时,它都会给我以下异常:
org.hibernate.id.IdentifierGenerationException: 试图分配 id 从 null 一对一属性 [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 类中初始化 book 属性,但我不知道该怎么做:
类似这样的东西,除了 setOrderDetails 方法需要 Set<OrderDetails> 而我只传递一个,这就是我卡住的地方
public void setBook(Book book) {
this.book = book;
book.setOrderDetails(this);
}
非常感谢任何帮助:)
【问题讨论】:
标签: spring-boot