跳到主要内容

一对多

和JPA不同,Jimmer不支持单向一对多关联,一对多关联只能作为多对一关联镜像。也就是说,一对多关联必然意味着双向关联。

在下面的代码中

  • 左侧:在多对一一文中我们讨论过的Book.store

  • 右侧:本文要讨论的一对多关联BookStore.books,它是Book.store的镜像

Book.java
@Entity
public interface Book {

@ManyToOne
@JoinColumn(name = "STORE_ID")
BookStore store();

...省略其他代码...
}

mirror

BookStore.java
@Entity
public interface BookStore {

// `mappedBy`表示`BookStore.books
// `是`Book.store`的镜像
@OneToMany(mappedBy = "store")
List<Book> books();

...省略其他代码...
}
  • @OneToMany关联仅仅是@ManyToOne关联的镜像,不得使用@JoinColumn@JoinTable

  • @OneToMany关联属性必须非null,如果查询父对象并要求抓取其一对多关联属性,那么对于没有对应子对象的父对象而言,该属性的值是一个长度为0的集合,而非null