sql - Spring Boot JPA Repository IS NULL,LIKE 不工作
问题描述
我按姓名、姓氏和号码过滤。有时我想按单个名称搜索,有时按姓名和姓氏搜索,有时按 all.LIKE 和 is null 操作不起作用。
例子
姓名:亚当姓氏:最大编号:1235464 工作
姓名:亚当姓氏:最大编号:(空)不工作
2021-09-13 15:45:48 ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause
oracle.jdbc.OracleDatabaseException: ORA-01722: invalid number
@Transactional
@Modifying
@Query(value = "SELECT U.* FROM USER U "
+ "LEFT JOIN CV ON U.USERID=CV.USERID "
+ "JOIN PROFIL P ON P.CV_ID=CV.CV_ID "
+ "AND(:name is null OR P.name LIKE %:name% ) "
+ "AND (:surname is null OR P.surname LIKE %:surname% ) "
+ "AND (:no is null OR U.no=:no ) ", nativeQuery = true)
public List<User> findByDynamicQuery(@Param("name") String name, @Param("surname") String surname, @Param("no") String no);
解决方案
我需要您的用户模型类的代码来验证这一点,但这oracle.jdbc.OracleDatabaseException: ORA-01722: invalid number
通常意味着将字符串转换为数字时出现问题。因为只有当您的号码是时它才起作用,NULL
所以我怀疑您使用的是原始类型(例如int
, long
)而不是实际的 Number 类。如果是这种情况,则将模型中的/替换为int
/ 。long
Integer
Long
如果不是这样,请分享更多数据,我们会尽力提供帮助。
推荐阅读
- ionic-framework - ngFor ion-grid & button 中的离子输出裁剪底部
- kubernetes - 如何登录到 azure kubernetes 集群?
- machine-learning - 如何自信地评估 ML 图像分类器
- android - 当我进入地理围栏时,我不知道如何更改“btn_done.isEnabled = true”代码
- python-3.x - 如何在包含多个字典的列表中获得具有最大值的字典?
- javascript - 使用 select 过滤表数据的问题
- python - 不存在这样的文件或目录 PYTHON
- mongodb - 如何在 MongoDB 的父对象中搜索子对象?
- sql-server - SQL Server 中很少填充的表列的合适属性?
- sql-server - 键入字符串作为参数输入,返回错误消息“将数据类型 nvarchar 转换为日期时间时出错。”