我们有一个JPA @Entity类(比如User),它有一个使用EAGER选项加载的@ManyToOne引用(比如Address),后者依次以EAGER方式加载它自己的@ManyToOne字段(比如Country)。
我们使用EntityQuery界面根据搜索条件计算用户列表,在这样的加载过程中,所有已标记为EAGER的@ManyToOne字段都被加载。但是为了执行EntityQuery.resultCount(),我实际上不需要加载@ManyToOne字段。有没有办法防止在这种情况下加载EAGER字段,以便我们可以避免不必要的连接?
答案 0 :(得分:4)
如果您只想获取行数 ,请使用COUNT
聚合函数,而不是getResultCount()
。
否则,您可以将默认行为切换为延迟,并通过调用Hibernate.initialize(entity)
加载项目。但这很乏味。
答案 1 :(得分:2)
如果您需要的只是记录数,为什么不使用aggregate functions(在您的情况下为COUNT)?