在@ColumnTransformer

时间:2016-11-10 14:04:37

标签: spring hibernate jpa

我尝试使用Spring和Jpa(Hibernate)对单个字段使用数据库加密。以下是实体的一部分:

@ColumnTransformer(
   read="AES_DECRYPT(UNHEX(lastname), UNHEX(SHA2('secret', 512)))",
   write="HEX(AES_ENCRYPT(?, UNHEX(SHA2('secret', 512))))"
)
private String lastname;

这使用Mysql函数来加密和解密我的字段,所以我不必关心Java。

我的问题是我不能在我的Java代码中硬编码密码,但Java-Annotations只允许非动态的最终字符串作为参数。 如何使用spring应用程序属性替换密码'secret'

我无法使用Jpa-Converter,因为我希望能够按lastname进行过滤和排序。我还尝试将MySQL5InnoDBDialect子类化并注册StandardSQLFunction,但这在概念上不适用于@ColumnTransformer,因为这些函数是在JPA的上下文中注册的,而不是SQL。我还想过以编程方式操作hibernate配置之前它用于创建EntityManagerFactory,但我不知道如何做到这一点。任何帮助表示赞赏。

0 个答案:

没有答案