[英]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.