我在 MyBatis 关联模型中发现了这个概念:
我有两个表:Person 和 Book,每个 Person 可以有很多 Books,
@Select("SELECT * FROM person")
@Results(value = {
@Result(property = "personId", id=true,column = "personId"),
@Result(property="books", column="personId", javaType=ArrayList.class, many=@Many(select="getAllBooks")),
})
ArrayList<Person> getAllPersons ();
@Select("SELECT * FROM book where personId=#{personId}")
ArrayList<Book> getAllBooks(int personId);
所以假设我们有 1000 人,这意味着这个查询将执行 1000 次:
@Select("SELECT * FROM book where personId=#{personId}")
问题是如何(或者如果可能的话)在一个查询中获取所有书籍并使用 PK/FK 将它们映射到所有人。我相信它发生在 JPA 中。