在我看来,如果要保存子实体,必须首先找到它们的父实体。但这不是真的。下面是一个例子。
人员表
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "person", fetch = FetchType.LAZY)
private List<Book> books;
}
书桌
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "person_id", nullable = false)
private Person person;
}
书库
public interface BookRepository extends CrudRepository<Book, Long> {}
持续过程
// the person(id=1) is in the database.
Person p = new Person();
p.setId(1);
Book book = new Book();
book.setPerson(p);
book.setName("book");
bookRepository.save(book); // no error throws
我想知道为什么最后一句话是成功。person示例是手动创建的,不是由SpringDataJPA从数据库中检索的,我认为这意味着person示例的状态是暂时的。
暂无答案!
目前还没有任何答案,快来回答吧!