【发布时间】:2023-01-08 04:52:29
【问题描述】:
随着发布休眠 6,我又一次挠头试图弄清楚如何让 Hibernate 转换一个@高球到字节跳动为一个Postgres数据库。我还需要代码可以使用 H2(或任何内存数据库)进行测试。
我使用的是 Postgres 10+ (v13),因此可以满足该要求。
这是我之前使用的,这很棘手,因为我还需要它来使用 H2。 (PostGres 方言仅在生产中加载,未在测试中加载。)
遗憾的是,让 bytea 工作“超出了 Hibernate 6 用户指南的范围”。参见 2.2.47。 https://docs.jboss.org/hibernate/orm/6.0/userguide/html_single/Hibernate_User_Guide.html
迁移指南似乎也对这个话题保持沉默。 https://github.com/hibernate/hibernate-orm/blob/6.0/migration-guide.adoc
SQLDialect 系列的整个 API 都已重写,所以我回到第 1 个方块。
public class CustomPostgresSQL10Dialect extends PostgreSQL10Dialect{
public CustomPostgresSQL10Dialect() {
super();
registerColumnType(Types.BLOB, "bytea");
}
@Override
public SqlTypeDescriptor remapSqlTypeDescriptor(SqlTypeDescriptor sqlTypeDescriptor) {
if (sqlTypeDescriptor.getSqlType() == java.sql.Types.BLOB) {
return BinaryTypeDescriptor.INSTANCE;
}
return super.remapSqlTypeDescriptor(sqlTypeDescriptor);
}
}
【问题讨论】:
标签: java postgresql hibernate