【发布时间】:2015-12-30 06:50:00
【问题描述】:
我正在使用 Spring JPA 数据存储库对可能/可能不为空的参数数量进行查询。
我使用以下存储库类根据这三个参数进行查询。 员工、开始日期和结束日期
@Repository
public interface EmployeeReportRepo extends JpaRepository<EmployeeReport, Long>{
public EmployeeReport findFirstByEmployeeAndDate(Employee employee , Date date);
public List<EmployeeReport> findByEmployeeAndDateFilter(Employee employee, Date startDate, Date endDate);
}
以下是命名查询:
@NamedQuery(name = "EmployeeReport.findByEmployeeAndDateFilter", query = "SELECT e FROM employee_report e WHERE e.employee="
+ "?1" + " and e.date >=" + "?2" + " and e.date<=" + "?3")
但问题是这些参数可能为空,在这种情况下我的查询将失败。你这个我怎么办。一种解决方案可能是创建多个查询以促进空条件的每种组合,但这不是决定性的。任何建议我还能使用什么?
【问题讨论】:
-
这就是 JPA Criteria API 存在的原因。 docs.oracle.com/javaee/6/tutorial/doc/gjitv.html。还有其他选择:QueryDSL,甚至是动态组合的 JPQL。
-
@JBNizet QueryDSL 是我想使用的。