Hibernate @ColumnTransformer 的 Open JPA 等效项

auh*_*man 5 java postgresql hibernate jpa openjpa

我正在将 ORM 框架从 Hibernate 切换到 OpenJPA。

在 Hibernate 中,我们可以使用 @ColumnTransformer 注释字段,如下所示。

@Column(name = "EMP_NAME", length = 4000)
@ColumnTransformer(
        read = "pgp_pub_decrypt(emp_name::bytea,dearmor('"+key1+"'))",
        write = "pgp_pub_encrypt(?, dearmor('"+key2+"'))"
)
private String empName;
Run Code Online (Sandbox Code Playgroud)

如何在 OpenJPA 中执行相同操作

Dra*_*vic 2

我不确定与此相关的 OpenJPA 特定功能,但以下两种替代方案适用于所有 JPA 提供商:

  1. 创建一个可更新的视图,该视图执行必要的转换并将实体映射到视图而不是表。
  2. 将转换移至中间件并将其应用到实体生命周期回调中。

这两种解决方案的另一个好处是您可以使实体免受自定义本机 SQL 的影响。