【发布时间】:2020-10-27 17:15:07
【问题描述】:
虽然此映射在 MySQL 中用于保存对象:
@Id
private String id;
在 Oracle 上它抛出:ORA-01465: invalid hex number when I am saving my object.
这就是我创建 id 的方式:UUID.randomUUID().toString()
我的应用程序必须同时支持 MySQL 5 和 Oracle 12。所以我只能添加一些 mysql/oracle 特定的适配器/扩展,这些适配器/扩展可以在从一个数据库切换到另一个数据库时轻松关闭。如果这意味着将它们绑定到特定数据库,我无法更改 JPA 实体代码。它必须适用于两个数据库。
在从一个 MySQL 切换到 Oracle 时,我该怎么做才能不破坏应用程序?
【问题讨论】:
-
看看这对你有没有帮助stackoverflow.com/questions/17985893/…
-
表定义如何?
-
@Type(type="uuid-binary") 可以在 Oracle 上工作,但不能在 MySQL 上工作?表定义 ID NOT NULL RAW(16 BYTE) 我可以根据需要更改它。 RAW 是从 liquibase 更改日志生成的,该日志在此实体上具有 uuid 作为 id 类型。
它适用于 Mysql。我可以将其更改为 char(36),然后在 Oracle 和 Mysql 中将是相同的,因为 liquibase 在 Mysql 中执行此操作:'id','char(36)','NO','PRI',NULL,''