【发布时间】:2023-03-24 11:58:01
【问题描述】:
我有一个带有BLOB 列的实体:
@Lob
@Column(name = "SRC")
private byte[] src;
我的应用程序使用两个数据库,Oracle 和 PostgreSQL。当我用上面写的 Oracle 启动应用程序时,一切正常,但是当我用 PostgreSQL 启动时,我得到一个错误:
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [src] in table [catalogs]; found [bytea (Types#BINARY)], but expecting [oid (Types#BLOB)]
之后,我阅读了 Google 中的文章和建议并进行了修复:
@Lob
@Type(type="org.hibernate.type.BinaryType")
@Column(name = "SRC")
private byte[] src;
现在它在 PostgreSQL 上运行良好,但在 Oracle 上却出现异常:
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [src] in table [catalogs]; found [blob (Types#BLOB)], but expecting [raw(255) (Types#VARBINARY)]
我应该怎么做才能使它在两个数据库上都工作?
附:我对 CLOB 也有类似的问题
【问题讨论】:
-
您是否在
DataSource/JPA configuration中为每个数据库使用合适的驱动程序? -
当然。我有单独的配置文件进行配置。驱动程序和
oracle和postgresql存在依赖关系。 -
嗯.. 尝试将
columnDefinition = "VARBINARY"属性添加到您的@Column注释中,然后检查发生了什么。做两种情况:有和没有@Type注解。 -
没有帮助
标签: java oracle postgresql hibernate jpa