java如何使用规范在mysql查询中生成两个“或”条件和多个“和”条件
我想在规范的帮助下进行以下查询
select * from table where (order_quantity > 0 or product_verified = false) and sku = "12345";
下面是我的代码,但我得到了一个错误的结果集
Specification<JitOrderItem> specification = JitOrderItemSpecification.findAll();
specification = Specifications.where(specification).and(
Specifications.where(specification).or(JitOrderItemSpecification.filterByJitOrderQuantityGreaterThan(0))
.or(Specifications.where(specification).and(JitOrderItemSpecification.filterByProductVerified(false)))
);
specification = Specifications.where(specification).and(JitOrderItemSpecification.filterBySku(sku));
# 1 楼答案
我假设你正在使用JPA,可能是hibernate。您可以启用日志记录(对于hibernate,调试时使用“org.hibernate.sql”)。这样您就可以看到生成的查询,这可能有助于您自己调试这些查询
查看您的代码,您的最终规范如下所示:
您基本上是在查询以下内容(仅限WHERE子句):
你想要的可能是: