当前位置: 首页 > 知识库问答 >
问题:

Spring Data JPA-数字列类型的null参数存在问题

柴琨
2023-03-14

我想做一个动态查询,如果发送了特定的参数,本地查询应该根据它过滤结果。如果为空,则不应反映结果。

我正在使用Spring数据JPA和原生查询机制Oracle DB

对于字符串参数,这种方法效果很好

:email is null or s.email = :email

但是对于整数参数,当它们有值时,查询可以工作,但是如果参数为null,查询将失败,并出现错误

造成原因:java.sql.SQLSynTaxErrorExcture: ORA-00932:不一致的数据类型:预期的数字得到了BINary

我使用完全相同的方法为整数而不是字符串

我想知道问题是在我这边还是某种缺陷?

共有1个答案

锺离声
2023-03-14

在Oracle DB中,它不是这样工作的。一种解决方法是使用类似JPQL的

SELECT s FROM Entity s WHERE :id is null OR s.id = COALESCE(:id, -1)

或者使用oracle的TO_NUMBER函数进行本机查询

SELECT s FROM Entity s WHERE :id is null OR s.id = TO_NUMBER(:id)
 类似资料:
  • 我面临泛型的问题。 下面是我使用泛型的一个类: 在这里,我们的类:使用进行参数化。 我想在我们的一种方法中指定类型,如下所示: 但是,我遇到以下编译器错误:

  • 问题描述 存入的是点赞的数据,包括@param likeUserID 点赞用户ID ,@param likePostID 被点赞文章ID, @param likeAnswerID 被点赞回答ID 问题出现的环境背景及自己尝试过哪些方法 后端传入的数据已经是字符类型,但是后端报错java.lang.ClassCastException: java.lang.Integer cannot be cas

  • 一、泛型 Scala 支持类型参数化,使得我们能够编写泛型程序。 1.1 泛型类 Java 中使用 <> 符号来包含定义的类型参数,Scala 则使用 []。 class Pair[T, S](val first: T, val second: S) { override def toString: String = first + ":" + second } object ScalaAp

  • 问题内容: 该模块为通用类型提示提供了一个基类:该类。 方括号中的接受类型参数的子类,例如: 我的问题是,如何访问这些类型参数? 也就是说,作为输入,我如何获得和输出? 基本上我正在寻找这样的功能 问题答案: Python 3.8更新 从Python3.8开始,有: PEP-560还提供了,它允许我们使用第 n 个通用基的参数: 旧答案 可能性1 从Python 3.6开始。有一个公共和()字段。

  • 问题总结:我想传递一个带有类型参数(如

  • 问题内容: 所以我的问题是,我在Android(Java)上编写了一个函数,该函数需要两个Double,两个Int和一个Calendar对象。我相信提供的允许它在单独的线程中运行的类AsyncTask仅接受一种类型的Object(但允许多种)作为参数,因此我认为我可以将其放入List或LinkedList或其他内容中。 是否存在允许多个数据类型()的类型,还是我必须创建自己的对象类?我是一个新手程