這是我的查詢
@Query(value = " SELECT * FROM account.statement where `date` between ?1 and ?2")
List<Statement> findAllByDate(String startDate, String endDate);
這是我得到的錯誤資訊
Caused by: org.hibernate.QueryException: unexpected char: '`' [ SELECT * FROM account.statement where `date` between ?1 and ?2]
date是列名。我想檢索兩個日期之間的 Statement 物件串列。在這種情況下,日期是 LocalDate 物件,例如 2000-10-10。我嘗試在引數中使用 String 和 LocalDate 型別,仍然不起作用。
我到處搜索,堆疊溢位和 baeldung。我被困住了
uj5u.com熱心網友回復:
List<Statement> findByDateBetween(Date start, Date end);
uj5u.com熱心網友回復:
事實證明這是正確的實作
@Query(value = "SELECT * FROM account.statement WHERE date > ?1 AND date <= ?2",
nativeQuery = true)
List<Statement> findAllByDate(LocalDate startDate, LocalDate endDate);
謝謝我的家伙托馬斯
uj5u.com熱心網友回復:
您應該系結LocalDate,而不是String占位符:
@Query(value = " SELECT * FROM account.statement WHERE date BETWEEN ?1 and ?2")
List<Statement> findAllByDate(LocalDate startDate, LocalDate endDate);
uj5u.com熱心網友回復:
@Query("select a from Statement a where a.startDate >= :startDate and a.endDate <= :enddate")
List<Statement> findAllByDate(
@Param("startDate") Date startDate,@Param("endDate") Date endDate);
uj5u.com熱心網友回復:
雖然使用 @Query 可能會解決問題,但在這種情況下您也可以使用 JpaRepository
首先,您需要將 JpaRepository 添加到您的存盤庫介面:
擴展 JpaRepository<Statement, Long>
使用此行并使用日期列名稱復制 Date 并使用適當的日期型別:
List findByDateBetween(LocalDateTime to, LocalDateTime from);
例子:
@Repository
public interface StatementRepository extends JpaRepository<Statement, Long> {
//where x.startDate between ?1 and ?2
List<Statement> findByDateBetween(LocalDate to,LocalDate from);
}
有關更多資訊,您可以查看檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/432632.html
