将java.time持久化为tinyblob迁移到Date

时间:2017-03-20 13:35:24

标签: mysql hibernate java-8 liquibase

我正在研究一些使用java8,hibernate5,spring等的遗留应用程序。我想要做的是包含hibernate-java8模块以正确使用java.time对象,而无需任何映射器,转换器和blob到DB。

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

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

1 个答案:

答案 0 :(得分:0)

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