在两个日期+另一列之间的查询在Hibernate 5中不起作用

时间:2018-04-30 14:27:28

标签: hibernate spring-mvc jpa

我可以使用

获取记录
`Criteria crit = session.createCriteria(GenerateInvoiceBean.class);
crit.add(Restrictions.eq("dealerId", dealerId)).add(Restrictions.between("billDate", frDate, tDate));
List<GenerateInvoiceBean> gib = crit.list();
            return gib;`

由于在Hibernate 5.1.16中不推荐使用createCriteria,我正在尝试使用

`CriteriaBuilder builder = session.getCriteriaBuilder();
            CriteriaQuery<GenerateInvoiceBean> query = builder.createQuery(GenerateInvoiceBean.class);

            Root<GenerateInvoiceBean> root = query.from(GenerateInvoiceBean.class);
            query.select(root).where(builder.equal(root.get("dealerId"), dealerId)).where(builder.between(root.get("billDate"), frDate, tDate))
            .orderBy(builder.asc(root.get("billNo")));

            List<GenerateInvoiceBean> gib = session.createQuery(query).getResultList();
            return gib;`

哪个不行。 任何解决方案或建议都会很棒!感谢

1 个答案:

答案 0 :(得分:1)

将CriteriaQuery调用更改为

query.select(root)
    .where(builder.equal(root.get("dealerId"), dealerId), 
           builder.between(root.get("billDate"), frDate, tDate))
    .orderBy(builder.asc(root.get("billNo")));

所以两个where子句在一次调用中一起处理。