gpt4 book ai didi

java - JPA 中的动态 COUNT 抛出 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 12:28:21 25 4
gpt4 key购买 nike

我的目标是创建一种方法,可以从数据库中的任何表中检索总行数。

这就是我所做的:

ENTITY_MANAGER_FACTORY = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
EM = ENTITY_MANAGER_FACTORY.createEntityManager();

public static long getRowCount(Root<?> root) {
CriteriaBuilder cb = EM.getCriteriaBuilder();
CriteriaQuery<Long> query = cb.createQuery(Long.class);

root = query.from(root.getClass());
query.select(cb.count(root));

return EM.createQuery(query).getSingleResult();
}

这就是我调用该方法的方式:

Root<PlacesEntity> placesRoot = null;
DbTools.getRowCount(placesRoot)

但是它不起作用,该方法在 root = query.from(root.getClass()); 行抛出 NullPointerException

最佳答案

试试这个(警告未测试):

public static long getRowCount(Class<?> rootClass) {
CriteriaBuilder cb = EM.getCriteriaBuilder();
CriteriaQuery<Long> query = cb.createQuery(Long.class);

Expression<?> root = query.from(rootClass);
query.select(cb.count(root));

return EM.createQuery(query).getSingleResult();
}

/*****/
DbTools.getRowCount(PlacesEntity.class);

祝你好运!

关于java - JPA 中的动态 COUNT 抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26148571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com