【发布时间】:2020-11-24 17:16:34
【问题描述】:
我有以下模型:“经典”多对多书籍/作者关联,但有两个特点。
- 作者与图书没有关联。
- 作者个人数据存储在其他关联实体上,称为 Person。
型号:
public class Book {
@ManyToMany
List<Author> authors;
}
public class Author {
@OneToOne
Person person;
}
public class Person {
String name;
}
我想编写一个服务,给定一本书,它将返回与之相关的所有作者。我还想检索避免 N+1 问题的个人数据。
在我的书库中,我写了一个这样的自定义查询:
@Query("select b.authors from Book b join b.authors a join fetch a.person where b = :book")
List<Author> listAuthors(@Param("book") Book book);
但我有以下错误:
查询指定连接抓取,但是抓取的所有者 选择列表中不存在关联 (...)
我可以通过在 Author 端添加与 Books 的关联并从中获取 Person 来解决这个问题。不幸的是,就我而言,作者不了解书籍是非常可取的。
有没有办法从 Book 中获取 Person 数据?
【问题讨论】: