繁体   English   中英

JPA自定义查询,日期最接近当前过滤条件

[英]Jpa custom query with date nearest to present filter

我有使用JPA的SpringBoot webapp,并且有一个像这样的模型类:

@Entity
class Server {
  .....
  private Date updateDate;

}

现在,我想在存储库中创建一个自定义查询,以获取属性updateDate最接近Oracle 11g数据库中当前Date的Server实体。

现在,我只找到了一些示例,例如对于SQLServer:

SELECT TOP 1 *
FROM x
WHERE x.date < @CurrentDate
ORDER BY x.date DESC

我想要在Oracle 11g DB中使用Jpa构建自定义查询的类似方法。

谢谢你们

使用Spring Data JPA时,您可以创建一个存储库方法:

Server findFirstByUpdateDateLessThan(Date currentDate);

您必须将currentDate作为参数传递,因为无法在存储库方法中使用current_date。

如果您想使用查询,那将是可能的。

您还可以使用普通的JPA:

List<Server> list = entityManager
       .createQuery("select s from Server s where s.updateDate < current_date", Server.class)
       .setMaxResults(1)
       .getResultList();

如果您确定会得到一个结果,则也可以调用getSingleResult()

不,也许我表现不好。 无论如何,我想要一个使用Jpa的方法,该方法可以将日期更近的实体还给我。

解决方案是:

public interface ZabbixInstanceRepository extends JpaRepository<ZabbixInstance,String> {

  @Query("select z from ZabbixInstance z where z.refreshDate = (select max(z.refreshDate) from ZabbixInstance z)")
  ZabbixInstance findByClosestDate();

}

它运作完美。 我希望它可以帮助其他人。

不管怎么说,还是要谢谢你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM