gpt4 book ai didi

java - Hibernate native 查询可选参数抛出 'operator does not exist: bigint = bytea'

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:45 25 4
gpt4 key购买 nike

我有一个查询如下:

SELECT id FROM table1 WHERE (:param IS NULL OR id_or_smth = :param)

param 参数是可选的,因此它可以是null

  1. 我创建了一个javax.persistance.Query
  2. 然后我 setParameter("param", null)
  3. 当我调用 getResultList() 时,出现了以下错误:

Caused by: org.hibernate.exception.SQLGrammarException: ERROR: operator does not exist: bigint = bytea

我该如何处理?

最佳答案

HQL 和 Criteria 仅在您指定实际的实体属性/表列时才有效,因此这不起作用:

:param IS NULL

如果 id_or_smth 是 Table1 列,那么您的查询应该如下所示:

Query q = entityManager.createNativeQuery("SELECT id FROM table1 WHERE id_or_smth IS NULL or id_or_smth = :param");
q.setParameter("param", paramValye);
q.getResultList();

并且 paramValue 不能为 null。

在 SQL 中,您必须始终使用 IS NULLIS NOT NULL,因为这样的查询:

SELECT id FROM table1 WHERE id_or_smth = NULL

将始终返回空结果,即使存在满足 id_or_smth IS NULL 的行

关于java - Hibernate native 查询可选参数抛出 'operator does not exist: bigint = bytea',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25360336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com