Era*_*tes 4 java jpa eclipselink criteria-api
我正在尝试使用 CriteriaBuilder 创建一个查询,其中我需要一个谓词,其中谓词的值类似于数据库中的值。
基本上,我需要能够做到以下几点:
WHERE myTestValue LIKE columnValue
在本机查询中,这是一个选项,但使用 CriteriaBuilder 或 NamedQueries,它似乎不起作用。
String myValue = "foo@bar.com";
cb.where(cb.like(myValue, root.get(Entity_.email));
Run Code Online (Sandbox Code Playgroud)
JPA 中是否有选项可以这样做?还是我应该回退到本机查询?
编辑
我需要能够检查给定值是否与数据库中的通配符条目匹配。所以数据库有一个记录%@bar.com%,我需要检查我的给定值是否foo@bar.com与该记录匹配。
我认为你的参数应该是相反的:
cb.where(cb.like(root.get(Entity_.email),myValue);
Run Code Online (Sandbox Code Playgroud)
另外,您可能需要使用将其添加到第二个参数中:
cb.where(cb.like(root.get(Entity_.email),"%"+myValue+"%");
Run Code Online (Sandbox Code Playgroud)