繁体   English   中英

Spring 数据 JPA - NUMBER 列类型的 null 参数问题

[英]Spring Data JPA - problem with null parameter for NUMBER column type

我想进行动态查询,如果发送特定参数,本机查询应该根据它过滤结果。 如果是 null,则不应反映结果。

我正在使用带有本机查询机制的 Spring 数据 JPA + Oracle DB

对于字符串参数,这种方法可以正常工作

:email is null or s.email = :email

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

引起:java.sql.SQLSyntaxErrorException:ORA-00932:不一致的数据类型:预期的数字得到了二进制

我对 Integer 使用完全相同的方法而不是 String

我想知道问题是在我这边还是某种错误?

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

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

或者对于本机查询,使用TO_NUMBER function 的 oracle

SELECT s FROM Entity s WHERE :id is null OR s.id = TO_NUMBER(:id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM