java - 两个日期之间的jpa查询
问题描述
这是我在 SQL Server 上的查询:
select count(*) from noleggi
where id_utente = 1 AND id_libro =25 and GETDATE() BETWEEN inizio_prestito AND fine_prestito
使用 JPA 存储库的正确语法是什么?
我试过这个:
@Query(value = "SELECT COUNT(n) from Noleggio n " +
"WHERE n.libroId = ?1 AND n.utenteId=?2 AND CURRENT_DATE() BETWEEN n.inizioPrestito AND n.finePrestito")
Long countByUtenteIdAndLibroId(Long idLibro, Long idUtente, LocalDate inizioPrestito, LocalDate finePrestito);
并收到此错误:
查询方法 public abstract java.lang.Long com.finance.biblioteca.repository.NoleggioRepository.countByUtenteIdAndLibroId(java.lang.Long,java.lang.Long,java.time.LocalDate,java.time.LocalDate 的验证失败
解决方案
我对您的问题的想法是您没有BETWEEN
. 您只需将字段作为名称而不是作为索引参数。您的代码应如下所示:
@Query(value = "SELECT COUNT(n) from Noleggio n " +
"WHERE n.libroId = ?1 AND n.utenteId=?2 AND CURRENT_DATE() BETWEEN ?3 AND ?4")
Long countByUtenteIdAndLibroId(Long idLibro, Long idUtente, LocalDate inizioPrestito, LocalDate finePrestito);
根据您的 JPA 版本,您是否需要编写自己的LocalDateConverter,如上面的响应中所述。
推荐阅读
- python - 如何生成客户的excel报告?
- node.js - 常量令牌 = this.client.token ?? this.client.accessToken; SyntaxError:意外的令牌'?repl.it 最新节点
- javascript - 如何修复 Nodejs 和“gridfs-stream”的错误
- git - 在没有在线存储库的情况下检查代码中的更改
- python - 将 Python 子字符串与 char 值进行比较
- html - 如何在不使用弹性框的情况下将连接放置在屏幕外?
- python - 更改 SHAP 图的纵横比
- mysql - 如何在不使用 rank() 和分区的情况下在 MySQL 5.7 中显示排名
- laravel - 使用getAttribute(laravel)后受保护的演员表不起作用
- java - org.apache.commons.vfs2.FileSystemException:无法设置上次修改的时间戳