java - JPA CriteriaBuilder 计数返回错误数据
问题描述
我想用来自 AnimalFilter 和 deleteDatetime 的条件来计算我的行数,它总是为空。它返回给我奇怪的值-> 每个birthId 都相似,但它们在我的数据库中是不同的。我究竟做错了什么?
我的代码:
@Repository
public class AnimalSearchCount {
@PersistenceContext
private EntityManager entityManager;
Long countBy(AnimalFilter filter) {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Animal> animal = cq.from(Animal.class);
Predicate deleteDatetimePredicate = cb.isNull(animal.get("deleteDateTime"));
if (filter.getBirthId() != null) {
cq.select(cb.count(animal.get("birth").get("id")));
cq.where(deleteDatetimePredicate);
}
return entityManager.createQuery(cq).getSingleResult();
}
}
解决方案
if (filter.getBirthId() != null) {
cq.select(cb.count(animal));
cq.where(
deleteDatetimePredicate,
cb.eq(animal.get("birth").get("id"), filter.getBirthId()));
}
推荐阅读
- javascript - 使用 javascript 从 m3u8 流中获取音频数据以发送到客户端浏览器中的字幕
- matlab - 为什么当我手动输入像素值时 MATLAB 的 norm 函数起作用,但在用于访问图像中的像素值时不起作用,如下所示?
- javascript - Vue Draggable - 有没有办法在列表底部设置占位符放置区/位置?
- windows - 关于在上下文菜单中添加行参数的问题
- python - 使用 odeint 解包的值不足(预期为 2,得到 1)
- angular - 更新与行为主题相关的变量而不更新行为主题
- r - R:带有read_fwf()的“错误:意外的字符串常量”
- r - 闪亮的 SQL Server
- python - BS4 + html, b 标签问题
- python - 在python 3中读取香港补充字符集