我正在开发一个spring-data-jpa应用程序。
我已经使用findBy
来运行存储库,但是当我看起来带有重音的内容时,它不起作用。有谁知道为什么?
我使用以下内容:
Page<Dades> findByNomcomercialIgnoreCaseContaining (@Param ("nomcom") String nomcom, Pageable pageable);
数据库是Oracle。
感谢您的关注。
答案 0 :(得分:1)
这是因为ignoreCase
没有处理重音。它只在比较它们之后比较两个String。有关更多信息,请参阅documentation。
我不知道用Spring Jpa忽略重音的任何简单解决方案。你要么:
org.apache.commons.lang3.StringUtils.stripAccents
后比较字符串)。upper
,like
等函数,因此您必须编写自己的函数,具体取决于您使用的数据库。答案 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类型