Java Hibernate本机查询可选参数抛出';运算符不存在:bigint=bytea';
我的问题如下:Java Hibernate本机查询可选参数抛出';运算符不存在:bigint=bytea';,java,sql,hibernate,jpa,orm,Java,Sql,Hibernate,Jpa,Orm,我的问题如下: SELECT id FROM table1 WHERE (:param IS NULL OR id_or_smth = :param) param参数是可选的,因此它可以是null 我创建了一个javax.persistence.Query 然后我setParameter(“param”,null) 当我调用getResultList()时,我得到了以下错误: 原因:org.hibernate.exception.sqlgrammareexception:错误: 运算符不存在:
SELECT id FROM table1 WHERE (:param IS NULL OR id_or_smth = :param)
param
参数是可选的,因此它可以是null
javax.persistence.Query
setParameter(“param”,null)
getResultList()
时,我得到了以下错误:HQL和条件只能在指定实际实体属性/表列时起作用,因此这不起作用:
:param IS NULL
如果id_或_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 NULL/IS NOT NULL,因为这样的查询:
SELECT id FROM table1 WHERE id_or_smth = NULL
将始终返回空结果,即使存在满足id_或_smth为NULL的行当param为NULL时是否确实要获取表的所有记录?等等,在javadoc中,我发现setParameter函数中的第二个参数必须为非null。解决方法是,当参数为null时,可以设置一些默认模式,并将其置于equal中。deterministicFail:我只是想简化查询:如果传递的参数不为null,则搜索。但似乎不会走这条路。好吧。在sql中是否有引用NULL的对象可以传递?sql.Types.NULL不起作用。我只是不想更改查询,但不知何故传递NULL:)哦,等等。我没有发现…somth的id是空的。。。我只想在传递时按列id_ofsmth搜索:param不是NULL(not)NULL是您要查找的SQL构造。传递null即使在JDBC中也不起作用。
SELECT id FROM table1 WHERE id_or_smth = NULL