Hibernate/JPA中@OneToOne和@MapsId的使用
阿新 • • 發佈:2021-02-05
技術標籤:javaMapsId的使用OneToOne和MapsId
Hibernate/JPA中@OneToOne和@MapsId的使用
雙向@OneToOne的效率低於與父表共享主鍵的單向@OneToOne。因此,不要使用雙向@OneToOne,最好是依靠單向@OneToOne和@MapsId。第一步:在子實體這邊使用@MapsId基本上,上面@OneToOne關聯,它將與父表共享主鍵,父實體見如下,父實體中沒有@OneToOne,這說明是從子實體指向父實體的單向關聯;
第一步:在子實體這邊使用@MapsId:
@Entity public class Book implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotNull @Column(name = "title", nullable = false) private String title; @Column(name = "description") private String description; @Column(name = "publication_date") private LocalDate publicationDate; @Column(name = "price", precision = 21, scale = 2) private BigDecimal price; @OneToOne(fetch = FetchType.LAZY) @MapsId private Author author;
基本上,上面@OneToOne關聯,它將與父表共享主鍵,父實體見如下,父實體中沒有@OneToOne,這說明是從子實體指向父實體的單向關聯:
@Entity public class Author implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "birth_date") private LocalDate birthDate;