【问题标题】:Getting ORA-01722: invalid number in Spring Data query获取 ORA-01722:Spring Data 查询中的数字无效
【发布时间】:2018-10-12 22:20:35
【问题描述】:

我有两个由非主键连接的表。此 SQL 查询按预期输出 3 个值。

它正在寻找部门表的主键。部门2_.deptno 因此我会尝试@EmbeddedId。

【问题讨论】:

  • 你的加入列应该是emp_dept_code,不是吗?
  • @Angular_Newbie 你找到什么了吗?
  • 是的。该表没有主 ID,所以我使用 ROWID 作为主键并且它有效.. duhh..lol。谢谢。

标签: java spring-boot spring-data-jpa entity jpa-2.0


【解决方案1】:

Where 语句中尝试以下操作:

employee.emp_dept_code In(employee.department)

更新

您正试图在 where 语句中将数字与 varchar2 进行比较。

【讨论】:

  • 没错。这就是 In(employee.department) 所做的。我将覆盖等号和哈希码,然后使用@EmbeddedId,因为这两个字段是复合的。
  • 您必须将数字与数字或 varchar2 与 varchar2 进行比较,否则数据库引擎将发送此错误“ORA-01722:无效数字错误”或其他类似错误,您的错误在您的 SQL 语句中不在春季数据中。
  • 是的。这是在查询中。在(员工。部门)。我相信这映射到 id。 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "department") private Set employeee = new HashSet();因此我必须创建embeddedid 进行比较。
【解决方案2】:

如果您使用的是 UNIX/LINUX 操作系统,那么 MySQL 中的表名是区分大小写的。

所以我总是建议@Table(name = "<your_table>") 使用小写表名,并在创建查询中使用小写字母创建表。如果贵公司有指导方针,想法就是要保持一致。

你也可以让 MySQL 不区分大小写关注this tutorial

【讨论】:

  • 谢谢,但是我确信表名不是问题,因为我可以运行基本查询。我的问题是 JPA 实体映射。一对多 多对多。我认为我走在正确的道路上。我会让你知道会发生什么。
【解决方案3】:

该表没有主 ID,因此我使用 ROWID 作为主键并且它有效.. JPA entity has no primary key?

【讨论】:

    猜你喜欢
    • 2015-04-21
    • 2020-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 2018-06-25
    • 2019-09-07
    相关资源
    最近更新 更多