首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何修复“尝试从空的一对一属性分配id”

如何修复“尝试从空的一对一属性分配id”
EN

Stack Overflow用户
提问于 2019-06-25 05:02:45
回答 1查看 1.1K关注 0票数 1

我正在开发一个带有spring boot的电子图书馆应用程序,它允许用户订购图书(这些数据保存在OrderDetails表中)。每当我尝试为某个用户保存已订购的图书时,都会出现以下异常:

org.hibernate.id.IdentifierGenerationException:尝试从空的一对一属性com.springboot.library.domains.OrderDetails.book中分配id

下面是OrderDetails类:

代码语言:javascript
复制
@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类

代码语言:javascript
复制
@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>,而我只传递了一个,这就是我被卡住的地方

代码语言:javascript
复制
public void setBook(Book book) {
    this.book = book;
    book.setOrderDetails(this);

}

如果有任何帮助,我将非常感谢:)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56743909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档