我正在将 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 中.
这两种解决方案的另一个好处是您可以使实体不受自定义原生 SQL 的影响。
关于java - 为 Hibernate @ColumnTransformer 打开 JPA 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38924915/