在自定义存储库中使用SpringBoot和JPA条件查询进行带时间戳的java查询
如何使用JPA条件查询在自定义JPA存储库中基于时间戳进行查询
我有一个startTime
和endTime
,我想用它来查询实体,它们之间有一个time
字段,但我需要在自定义存储库中这样做,因为我需要使用很多其他字段来构建复杂的查询
我已经成功地构建了一个复杂的查询,并得到了正确的结果,除非我尝试通过startTime
和endTime
进行查询。我一直在尝试做下面的事情,但运气不好
@PersistenceContext private EntityManager em;
...
final CriteriaBuilder cb = this.em.getCriteriaBuilder();
final CriteriaQuery<AutoenrollmentEvent> cr = cb.createQuery(Event.class);
final Root<AutoenrollmentEvent> root = cr.from(Event.class);
final List<Predicate> predicates = new ArrayList<>();
...
predicates.add(cb.between(root.get("time"), data.getStartTime(), data.getEndTime()));
...
cr.select(root).where(predicates.toArray(new Predicate[0]));
return this.em.createQuery(cr).getResultList();
其中data.getStartTime()
和data.getEndTime()
属于java.sql.Timestamp
类型
其思想是在startTime
和endTime
之间的time
字段中获取所有具有时间戳的条目
有什么办法吗
谢谢
# 1 楼答案
您可以通过使用Spring Data JPA Crudepository接口来实现这一点:
然后使用它:
Spring将自动实现查询并返回结果Official docs