Spring JPA findBy accent

时间:2016-07-06 08:13:01

标签: spring-data-jpa

我正在开发一个spring-data-jpa应用程序。 我已经使用findBy来运行存储库,但是当我看起来带有重音的内容时,它不起作用。有谁知道为什么? 我使用以下内容:

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

数据库是Oracle。

感谢您的关注。

2 个答案:

答案 0 :(得分:1)

这是因为ignoreCase没有处理重音。它只在比较它们之后比较两个String。有关更多信息,请参阅documentation

我不知道用Spring Jpa忽略重音的任何简单解决方案。你要么:

  1. 在查询中删除此参数,然后在Java中过滤结果(在执行org.apache.commons.lang3.StringUtils.stripAccents后比较字符串)。
  2. 使用Spring Jpa规格。同样,它仅提供upperlike等函数,因此您必须编写自己的函数,具体取决于您使用的数据库。

答案 1 :(得分:0)

不需要@Param。如果您有任何疑问,即如果您正在使用@Query,那么我们需要使用@param将特定值传递给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类型