Java hibernate本机查询是否提取子对象

Java hibernate本机查询是否提取子对象,java,hibernate,Java,Hibernate,我有一个名为“Book”的实体类,它有一个“Author”,这是另一个实体类,它是一个多对一关系。 那么,当我调用这个本机查询时,它是否也会获取作者?我真的不想获取Author对象,因为我只需要检索关于这本书的信息,而不是关于作者的信息。(我认为查询作者表是浪费时间) 如何使用本机查询仅获取Book对象而不获取作者信息 您可以尝试: @OneToMany(mappedBy = "columnName", cascade = CascadeType.REMOVE, orphanRemoval =

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

如何使用本机查询仅获取Book对象而不获取作者信息

您可以尝试:

@OneToMany(mappedBy = "columnName", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = FetchType.LAZY)
private Author author;
因此,这将不会加载作者的数据。 无论何时在任何地方执行
getAuthor
,只有它才能获取数据,否则就不会。
FetchType.LAZY
告诉hibernate在获取书籍数据时不要获取数据

我建议,如果只有
1个子实体
,则可以使用
FetchType.EAGER
,但如果有
多个子实体
,则最好不要使用
EAGER
。当时
LAZY
fetch类型更适合使用


我上面的代码是获取类型的hibernate配置的基础。

这听起来不太正确。首先,如果它是一个单一的关系,那么作者应该是一个列表或集合。其次,我的案例是多人关系。在这种情况下,总是迫不及待地取回。此外,我不想仅仅因为这一个查询而更改实体类。在其他情况下,我可能需要随时取。如何在不同的问题上停止急于抓住一个或多个。仅仅添加FetchType.LAZY是行不通的,它应该是实体类的集合元素。我在回答时也说过,对于基本的想法,我已经举了一个例子。但是你的例子对我没有帮助。这是一个完全不同的情景。我的问题是关于本机查询,而不是HQLYes,对于作为延迟获取类型的特殊场景处理,我将尽快向您发布。我在上面。谢谢
@OneToMany(mappedBy = "columnName", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = FetchType.LAZY)
private Author author;