打开Hibernate @ColumnTransformer的JPA等效项

时间:2016-08-12 19:06:05

标签: 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;

如何在OpenJPA中执行相同的操作

1 个答案:

答案 0 :(得分:2)

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

  1. 创建一个updatable view来执行必要的转换,并将实体映射到视图而不是表格。
  2. 将转换移至中间件并将其应用于entity lifecycle callbacks
  3. 这两种解决方案的另一个好处是可以保持实体不受自定义本机SQL的影响。