兼容 Postgres、MySQL、HSQL 的字节数组类型

Posted

技术标签:

【中文标题】兼容 Postgres、MySQL、HSQL 的字节数组类型【英文标题】:Compatible type of bytearray for Postgres, MySQL, HSQL 【发布时间】:2021-12-30 10:27:14 【问题描述】:

我有一个如下所示的列:

@Column(name = "somedata", columnDefinition = "bytea")
@Size(min = 1, max = 65535)
private byte[] somedata;

这个bytea 列定义适用于 PostgreSQL,但出于测试目的,我使用不支持它的 HSQL,除非我将其重命名为 blob。我想使用 mysql 作为第二个数据源,它也不支持提到的 HSQL 数据类型。

所以我的问题是字节数​​组类型是否有一个通用的解决方案可以同时适用于这三个数据源?

【问题讨论】:

这能回答你的问题吗? proper hibernate annotation for byte[] 我读过这一篇,但对我没有用 HSQLDB 支持标准 SQL 类型名称 VARBINARY 【参考方案1】:

我已经设法通过这种方式使其适用于这三个数据库:

现在的类型是:

    HSQL 块 PostgreSQL-bytea MySQL-mediumblob
@Column(name = "somedata", length = 5 * 1024 * 1024)
@Size(min = 1, max = 65535)
@Type(type="org.hibernate.type.BinaryType")
@Lob
private byte[] somedata;

【讨论】:

以上是关于兼容 Postgres、MySQL、HSQL 的字节数组类型的主要内容,如果未能解决你的问题,请参考以下文章

从 HSQL 迁移到 OrientDB

从旧映射为 hsql 生成兼容的连接表

HSQL和MySQL的区别

mysql的hsql休眠方言

finedb(内置的HSQL数据库)迁移数据到MySQL

是否有必要在hibernate中安装HSQL而不是MYSQL作为DATABASE?