切换到 v3.1 后类似 CriteriaAPI 的谓词行为异常

问题描述 投票:0回答:1

我们最近切换到

jakarta.persistence-api-3.1.0
,从那时起,测试失败了。我追溯到这一行:

criteriaBuilder.like(file.get("name"), "%" + filename + "%");

file
是具有字段
Path
File
实体的
name
filename
是我们要过滤的名称 - 这里是
"TEST"
。但是,当应用于查询时,此谓词会导致空列表。与
criteriaBuilder.like(file.get("name"), "%")
相同,这会导致我们的旧版本默认为 true/无过滤。

有效的是

criteriaBuilder.equal(file.get("name"), filename);

所以我确信

criteriaBuilder.like
方法有所改变,但我在文档中没有找到任何内容。我错过了什么?

criteria-api
1个回答
0
投票

解决方案是添加转义字符:

criteriaBuilder.like(file.get("name"), "%" + filename + "%", '\\');

否则,

%
_
等通配符将不会被视为通配符。

© www.soinside.com 2019 - 2024. All rights reserved.