我有使用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构建自定义查询。
谢谢大家
答案 0 :(得分:0)
使用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()
答案 1 :(得分:0)
不,也许我表现不好。无论如何,我想要一种使用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();
}
它完美地工作。希望对其他人有帮助。
仍然感谢