关于QuerydslJpaPredicateExecutor调用已废弃fetchCount API的问询
确认Spring Data JPA 3.1是否仍在使用QueryDSL 5.0已废弃的fetchCount方法
是的,Spring Data JPA 3.1版本确实仍在使用QueryDSL 5.0及以上版本中已被标记为废弃的fetchCount()方法,相关代码佐证如下:
AbstractJPAQuery.java(QueryDSL端)
... @Override @Deprecated public long fetchCount() { try { if (getMetadata().getGroupBy().size() > 1 || getMetadata().getHaving() != null) { logger.warning("Fetchable#fetchCount() was computed in memory! See the Javadoc for AbstractJPAQuery#fetchCount for more details."); Query query = createQuery(null, false); return query.getResultList().size(); } Query query = createQuery(null, true); return (Long) query.getSingleResult(); } finally { reset(); } } ....
QuerydslJpaPredicateExecutor.java(Spring Data JPA端)
... @Override public long count(Predicate predicate) { return createQuery(predicate).fetchCount(); } ...
从代码中可以明确看到:QueryDSL的fetchCount()方法已被@Deprecated注解标记为废弃,但Spring Data JPA 3.1的QuerydslJpaPredicateExecutor在实现count(Predicate)方法时,依然直接调用了该废弃方法。
内容的提问来源于stack exchange,提问作者Haneul Lee
相关产品推荐
相关产品推荐

