2016-07-06 108 views
0

我正在開發一個spring-data-jpa應用程序。 我搭上了findBy的存儲庫,但是當我看到帶有口音的內容時就不起作用。有誰知道爲什麼? 我使用下面的方法:Spring JPA findBy口音

Page<Dades> findByNomcomercialIgnoreCaseContaining (@Param ("nomcom") String nomcom, Pageable pageable); 

數據庫是Oracle。

感謝您的關注。

+0

我不認爲你需要param註釋,如果你想從方法名創建查詢,如果你想使用param註釋,那麼你需要在方法的頂部有@query。此外它將很高興看到錯誤日誌和實體。 –

回答

0

@Param不是必需的。如果您有任何疑問,即如果你正在使用@Query那麼我們就需要使用@參數傳遞相關型號的具體值query.Below可以檢查如何使用@Query和@Param

@Query("SELECT t.title FROM Todo t where t.id = :id") 
String findTitleById(@Param("id") Long id); 

,如果你不添加這些註釋用在你的倉庫層

@Transactional 
@Repository 

檢查另一件事,即

@Transactional 
    @Repository 
    public interface IXyzRepository extends CrudRepository<ABC,Integer>{ 
    //some methods you have 
    } 

是否ABC類的主ID是Integer類型的

0

這是因爲ignoreCase不處理重音。它只是比較兩個字符串後大寫他們。有關更多信息,請參見documentation

我不知道任何簡單的解決方案來忽略Spring Jpa的重音。您可以使用以下任一方式:

  1. 在查詢中刪除此參數,然後在Java中篩選結果(在執行org.apache.commons.lang3.StringUtils.stripAccents之後比較字符串)。
  2. 使用彈簧Jpa規格。同樣,它只提供像upper,0 like等功能,所以你必須自己編寫,具體取決於你使用的數據庫。