【问题标题】:Spring Boot JPA Repository IS NULL ,LIKE Not WorkingSpring Boot JPA Repository IS NULL,LIKE 不工作
【发布时间】:2021-09-13 12:28:10
【问题描述】:

我正在按姓名、姓氏和数字进行过滤。有时我想按单个姓名搜索,有时按姓名和姓氏搜索,有时按 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);

【问题讨论】:

  • 我们肯定需要更多详细信息才能为您提供帮助。
  • 你能发布你的用户模型类的代码吗?

标签: sql spring-boot jpa


【解决方案1】:

我需要您的用户模型类的代码来验证这一点,但oracle.jdbc.OracleDatabaseException: ORA-01722: invalid number 通常意味着将字符串转换为数字时出现问题。因为只有当您的号码是 NULL 时它才起作用,所以我怀疑您使用的是原始类型(例如 intlong)而不是实际的 Number 类。如果是这种情况,请将模型中的 int / long 替换为 Integer / Long

如果不是这样,请分享更多数据,我们会尽力提供帮助。

【讨论】:

    猜你喜欢
    • 2014-08-31
    • 1970-01-01
    • 2019-05-29
    • 2021-10-13
    • 2016-10-04
    • 2022-01-23
    • 2020-02-25
    • 1970-01-01
    • 2015-01-11
    相关资源
    最近更新 更多