如何使 BLOB 在 Oracle 和 PostgreSQL 上工作?

ip6*_*696 6 java oracle postgresql hibernate jpa

我有一个带有BLOB列的实体:

@Lob
@Column(name = "SRC")
private byte[] src;
Run Code Online (Sandbox Code Playgroud)

我的应用程序使用两个数据库: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)]
Run Code Online (Sandbox Code Playgroud)

之后我在谷歌上阅读了文章和建议并修复了它:

@Lob
@Type(type="org.hibernate.type.BinaryType")
@Column(name = "SRC")
private byte[] src;
Run Code Online (Sandbox Code Playgroud)

现在它在 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)]
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能使其在两个数据库上都工作?

PS我对CLOB也有类似的问题

Pet*_*der 0

不幸的是,hibernate 实体是特定于数据库提供者的。