Hibernate本机查询可选参数throws'运算符不存在:bigint = bytea'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate本机查询可选参数throws'运算符不存在:bigint = bytea'相关的知识,希望对你有一定的参考价值。
我有一个查询如下:
SELECT id FROM table1 WHERE (:param IS NULL OR id_or_smth = :param)
param
参数是可选的,因此它可以是null
- 我创造了一个qazxsw poi
- 我然后
javax.persistance.Query
- 当我打电话给
setParameter("param", null)
时,我收到以下错误:
引起:org.hibernate.exception.SQLGrammarException:错误:运算符不存在:bigint = bytea
我怎么处理这个?
答案
只有在指定实际的Entity属性/ Table列时,HQL和Criteria才能工作,因此这不起作用:
getResultList()
如果id_or_smth是Table1列,那么这就是您的查询的样子:
:param IS NULL
并且paramValue不能为null。
在SQL中,您必须始终使用IS NULL / IS NOT NULL,因为这样的查询:
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();
即使存在满足id_or_smth IS NULL的行,也将始终返回空结果
另一答案
也许你可以使用SELECT id FROM table1 WHERE id_or_smth = NULL
代替:
criteria queries
以上是关于Hibernate本机查询可选参数throws'运算符不存在:bigint = bytea'的主要内容,如果未能解决你的问题,请参考以下文章
具有动态查询的 JPA 也是 Hibernate 中的动态(可选)参数
在 Hibernate 中使用 @Query 进行带参数的本机查询
在 Spring Boot 中向本机查询添加参数会导致“org.hibernate.exception.SQLGrammarException”,