如何覆盖 FetchType.EAGER 在运行时懒惰

2022-09-04 22:47:33

使用JPA EntityManager和JPA Query对象,我如何覆盖具有注释@OneToMany(fetch = FetchType.EAGER)的东西,以便在查询中懒惰地获取?

如果我有休眠 Query 对象,我可以让它创建一个 criteria 对象,并使用它,将 fetch 类型设置为 lazy。但是我必须使用 JPA 查询对象。这个问题有什么解决方案吗?


答案 1

没有办法做到这一点,即使使用原生的Hibernate API也是如此。如果将关联定义为 EAGER,则将始终热切地加载它,并且无法使用查询进行更改。

反之亦然:您可以使用查询急切地加载延迟关联。


答案 2

查看Hibernate Fetch配置文件或JPA实体图。自从你在2012年提出这个问题以来,这个问题已经解决了。


推荐