我正在将 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;

如何在 OpenJPA 中做同样的事情

最佳答案

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

  • 创建一个 updatable view 来执行必要的转换并将实体映射到 View 而不是表。
  • 将转换移动到中间件并将它们应用到 entity lifecycle callbacks 中。

  • 这两种解决方案的另一个好处是您可以保持实体与自定义 native SQL 的区别。

    关于java - 为 Hibernate @ColumnTransformer 打开 JPA 等效项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38924915/

    10-09 06:52