如何修复保存关联实体时Hibernate错误“object references an unsaved transient instance”?
大家好!我是一名初学Java开发者,在使用Hibernate时遇到了一个问题。我有两个实体:`Author`和`Book`。一个作者可以写多本书,每本书引用一个作者(@ManyToOne关联)。
当我尝试保存一本新书和一个新作者时,Hibernate抛出异常:`org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.example.Book.author`。
这是我的代码:
```java
@Entity
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "author", cascade = CascadeType.ALL)
private List books = new ArrayList<>();
}
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@ManyToOne
@JoinColumn(name = "author_id")
private Author author;
}
```