如何将MySQL转换为条件查询?

时间:2019-04-16 08:29:43

标签: java hibernate spring-boot criteria criteria-api

我想将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;

1 个答案:

答案 0 :(得分:1)

您正在尝试将where子句放在on()语句中。

您应该离开b.on(cb.equal(a.get("id"), b.get("id")));

,然后为cb.isNull(a.get("id"))过滤cq