java - JPA CriteriaBuilder 值如列

标签 java jpa eclipselink criteria-api

我正在尝试使用 CriteriaBuilder 创建一个查询,其中我需要一个谓词,其中谓词的值类似于数据库中的值。

基本上,我需要能够执行以下操作: WHERE myTestValue LIKE columnValue

在 native 查询中,可以选择执行此操作,但使用 CriteriaBuilder 或 NamedQueries 时,它似乎不起作用。

String myValue = "foo@bar.com";
cb.where(cb.like(myValue, root.get(Entity_.email));

JPA 中有这样做的选项吗?或者我应该回退到 native 查询?

编辑 我需要能够检查给定值是否与数据库中的通配符条目匹配。因此数据库有一条记录 %@bar.com%,我需要检查给定值 foo@bar.com 是否与该记录匹配。

最佳答案

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

cb.where(cb.like(root.get(Entity_.email),myValue);

此外,您可能需要将其添加到第二个参数:

cb.where(cb.like(root.get(Entity_.email),"%"+myValue+"%");

关于java - JPA CriteriaBuilder 值如列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42230252/

相关文章:

java - 如何对指定文件夹中的文件执行 ant 任务?

java - JPA 中的相同对象

java - Java动态Web项目中的sqlite db文件保存在哪里?

java - 关于样式为 SWT.CALENDAR 的 DateTime 小部件

java - 如何使用 JPA 映射同一父类(super class)的实体之间的关系?

java - JSF 1.2 托管 Bean 中 @PersistenceContext 的含义

java - 使用 Spring/Hibernate 进行密码加密 - Jasypt 或其他?

java - 如何使 EclipseLink 不生成主键并将其传递给数据库

java - JPA 可以在删除子对象时处理删除父对象吗?

java - 基于角色的身份验证不起作用