我正在嘗試在 JPA hibernate @Repostiory 中運行以下查詢:
@Query(value = "select city, state_code "
"from mv_city_state_center "
"where upper(city) like upper(:citycriteria)%",
nativeQuery = true)
List<String> searchCityStateCenter(@Param("citycriteria") String cityCriteria);
特別是,該行like upper(:citycriteria)%。
這citycriteria是一個部分字串'pit',我想首先PIT將其大寫,然后將其放入like陳述句中,例如。where upper(city) like PIT%- 例如,這將與 PITTSBURGH 和 PITTCAIRN 匹配。
Hibernate 接受like pit%,但當upper被拋出時,兩者都失敗了:
like upper(:citycriteria)%like upper(:citycriteria%)
什么是正確的語法?現在,我確保所有呼叫方方法都通過,cityCriteria.toUpperCase()但希望查詢本身處理此問題,因此呼叫方不必關心它。
我還嘗試了本指南中的以下內容,但無濟于事。
public interface AuthorRepository extends JpaRepository<Author, Long> {
@Query("FROM Author WHERE UPPER(firstName) LIKE %?#{[0].toUpperCase()}%")
List<Author> findByFirstNameContainingIgnoreCase(String firstName);
}
uj5u.com熱心網友回復:
1 您正在使用本機查詢,為什么?
2 您回傳一個串列,但投影有兩列(city、state_code)!
要連接兩個字串,您可以使用 concat:
@Query(value = "select city, state_code "
"from mv_city_state_center "
"where upper(city) like upper(concat(:citycriteria, '%'))"
nativeQuery = true)
List<String[]> searchCityStateCenter(@Param("citycriteria") String cityCriteria);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377907.html
