spring数据jpa+hibernate保存子实体而不首先查找父实体

ni65a41a  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(202)

在我看来,如果要保存子实体,必须首先找到它们的父实体。但这不是真的。下面是一个例子。
人员表

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示例的状态是暂时的。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题