Java JPA CriteriaQuery-不区分重音
我正在使用JPA和PostgreSQL,我想创建一个CriteriaQuery并创建一个查询 没有考虑口音的地方 例如: 如果我搜索字母“a”,数据库应该返回值“ã”、“a”、“á”等。这应该发生在所有字母上 这是我想更改的代码示例。在本例中,它只区分大小写,不区分重音Java JPA CriteriaQuery-不区分重音,java,postgresql,jpa,non-ascii-characters,accent-insensitive,Java,Postgresql,Jpa,Non Ascii Characters,Accent Insensitive,我正在使用JPA和PostgreSQL,我想创建一个CriteriaQuery并创建一个查询 没有考虑口音的地方 例如: 如果我搜索字母“a”,数据库应该返回值“ã”、“a”、“á”等。这应该发生在所有字母上 这是我想更改的代码示例。在本例中,它只区分大小写,不区分重音 CriteriaBuilder qb = em.getCriteriaBuilder(); CriteriaQuery query = qb.createQuery(Pessoa.class); Roo
CriteriaBuilder qb = em.getCriteriaBuilder();
CriteriaQuery query = qb.createQuery(Pessoa.class);
Root<Pessoa> root = query.from(Pessoa.class);
query.from(Pessoa.class);
From from = root;
Predicate predicate = qb.like(qb.lower(from.get("name")),
"%" + name+ "%");
query.where(predicate);
CriteriaBuilder qb=em.getCriteriaBuilder();
CriteriaQuery=qb.createQuery(Pessoa.class);
Root=query.from(Pessoa.class);
query.from(Pessoa.class);
From=根;
谓词谓词=qb.like(qb.lower(from.get(“name”)),
“%”+名称+“%”;
where(谓词);
我使用了criteriaBuilder的功能,可以得到我想要的。我刚刚在类qb函数中调用了qb函数
我是这样做的:
Predicate predicate = qb.like(qb.function("unaccent",
String.class,qb.lower(from.get("name"))),
"%" + removeAccents(name) + "%");
使用带有
SF7ASCII
(葡萄牙语)作为参数的Oracle转换函数:
谓词p=cb.like(
cb.function(“convert”、String.class、cb.lower(root.get(Api_u.name))、cb.literal(“SF7ASCII”),
“%”+StringUtils.stripAccents(name.toLowerCase())+“%”;
我希望能够这样做:使用CriteriaQueryso使用CriteriaBuilder.function调用“uncent”(不管SQL函数是什么),从uncent(名称)类似uncent(“%JOÃO%”)的person-WHERE中选择*。使您的代码依赖于数据库,但对于这样的事情,您可能总是会依赖数据库