Hibernate本机查询是否获取子对象

时间:2015-09-15 03:13:52

标签: java hibernate

我有一个名为" Book"的实体类。它有一个"作者" ,这是另一个实体类,它是一个多对一的关系。 因此,当我调用此本机查询时,它是否也会获取作者?我真的不想获取Author对象,因为我只需要检索有关该书的信息,而不是关于作者的信息。 (我认为查询作者表是浪费时间)

Query q = JPA.em().createNativeQuery("select * from Book where id =?",Book.class).setParameter(1,bookId);

如何使用本机查询仅获取没有作者信息的Book对象?

1 个答案:

答案 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配置。