我们最近切换到
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
方法有所改变,但我在文档中没有找到任何内容。我错过了什么?
解决方案是添加转义字符:
criteriaBuilder.like(file.get("name"), "%" + filename + "%", '\\');
否则,
%
或_
等通配符将不会被视为通配符。