Java 命名查询

Java Named Query

我正在尝试创建一个 Java 命名查询来执行以下 postgres 查询:

select * from call_attempt where result is NULL and id like '0000000101%';

我的代码中将 0000000101 设置为 id,所以这就是我想要做的,但格式不正确:(我不确定如何在使用 % 时设置 id 字段,它必须在里面' ')

@NamedQuery(name = AttemptEntity.JQL.NOTENDED,
                       query = "SELECT ae FROM AttemptEntity ae WHERE ae.result IS NULL,"
                             + " ae.correlationId LIKE '=:id%'")

首先,您忘记了 and,并用逗号代替。

其次,% 必须作为参数的一部分传递:

SELECT ae FROM AttemptEntity ae WHERE ae.result IS NULL
and ae.correlationId LIKE :id

然后,在执行查询时:

String id = "0000000101%";
query.setParameter("id", id);

您不能在 NamedQuery 中使用 %,但可以在您分配给参数的值中使用它。

query.setParamter("id", 0000000101+ "%");

您还需要在 NULL 后添加 AND 并删除逗号。

参考:Named Query with like in where clause