迁移 java.time 作为 tinyblob 保留到 Date

Migrate java.time persisted as tinyblob to Date

我正在处理一些使用 java8、hibernate5、spring 等的遗留应用程序。我想做的是包含 hibernate-java8 模块以启用适当的java.time 对象的使用,没有任何映射器、转换器和 blob 到数据库中。

现在的问题是,我已经将一些列定义为 tinyblob,由于这些列中的数据,我无法将列类型更改为日期、时间戳等。 我尝试在 MySql 中使用 CASTCONVERTDATE 进行数据提取,但没有成功在那里,可能是因为持久值是我假设的可序列化对象,因为当我将它转换为 char 时,我得到这样的输出 �� sr java.time.Ser�]��"H� xpw �x.

排序的一种方法是创建具有适当数据类型的新列,并通过 java 代码将所有数据迁移到这些新列,然后切换逻辑以使用这些新列并删除旧列如果您需要更改很多列,则可能会很棘手。所以我在想是否有更简单、更好和更快的方法来进行类型之间的这种迁移? 忘了说 liquibase 用于数据库源代码控制,也许有办法通过 liquibase 做到这一点?

最后我通过创建具有适当数据类型的新列解决了问题,包括支持 java.time 类 的休眠模块,编写了一些迁移逻辑以从旧列读取数据并写入新列列,一切都完成后,切换逻辑以使用新列并删除旧列。