JPA CriteriaBuilder 值如列

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与该记录匹配。

Mac*_*ski 5

我认为你的参数应该是相反的:

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)