Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate本机查询可选参数抛出';运算符不存在:bigint=bytea';_Java_Sql_Hibernate_Jpa_Orm - Fatal编程技术网

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()
    时,我得到了以下错误:
  • 原因:org.hibernate.exception.sqlgrammareexception:错误: 运算符不存在:bigint=bytea

    我如何处理这个问题?

    也许您可以使用:


    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