我有一个名为" Book"的实体类。它有一个"作者" ,这是另一个实体类,它是一个多对一的关系。 因此,当我调用此本机查询时,它是否也会获取作者?我真的不想获取Author对象,因为我只需要检索有关该书的信息,而不是关于作者的信息。 (我认为查询作者表是浪费时间)
Query q = JPA.em().createNativeQuery("select * from Book where id =?",Book.class).setParameter(1,bookId);
如何使用本机查询仅获取没有作者信息的Book对象?
答案 0 :(得分:1)
您可以尝试:
@OneToMany(mappedBy = "columnName", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = FetchType.LAZY)
private Author author;
所以这不会加载作者的数据。
无论何时在任何地方getAuthor
,只有它才能得到数据。
FetchType.LAZY
告诉hibernate在获取Book的数据时不要获取数据。
我建议如果只有1 child entity
,那么您可以使用FetchType.EAGER
,但如果有more than one child entity
,则不宜使用EAGER
。那时LAZY
获取类型更好用。
我上面的代码基础知识用于获取类型的hibernate配置。