java - 如何将 MySQL 转换为条件查询?
问题描述
我想将 MySQL 查询转换为等效的条件查询。
我试过这个,它不起作用。
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Data> cq = cb.createQuery(Data.class);
Root<Data> a = cq.from(Data.class);
Join<Data, Item> b = a.join("Data", JoinType.LEFT); //left join
b.on(
cb.and(
cb.equal(a.get("id"), b.get("id")),
cb.isNull(a.get("id"))
)
);
cq.select(b);
List<Data> results = em.createQuery(cq).getResultList();
这是MySQL代码:
select * from data t left join item a
on t.id = a.id
where a.id is null;
解决方案
您正在尝试将 where 子句放在 on() 语句中。
你应该离开 b.on(cb.equal(a.get("id"), b.get("id")));
然后过滤 cqcb.isNull(a.get("id"))
推荐阅读
- python - Docker 上的 H2O 多核初始化
- python - 通过从现有列中过滤来创建新变量
- c# - 创建嵌套子 JSON
- python - 如何使用 Python Selenium 抓取隐藏的选择元素
- javascript - 如何在按钮的帮助下使用 html、css 和 javascript 重定向网页
- google-apps-script - 打开 Google 表格时,如何激活 column1 中的第一个空单元格?
- azure - 如何从 Azure 服务总线队列中删除/清除活动/死信消息?
- c#-4.0 - 将 JSON 反序列化为 C# 模型时出现问题
- php - 在 Codeigniter 中使用 Bootsrap 模式添加项目
- reactjs - Reactstrap表单反馈不显示