我有一个表,其中有一列将在插入记录后由触发器加密。当我阅读该专栏时,我需要在 hibernate 域类中应用解密函数。
保存对象时,列的值也将被保存。读取列时,对读取的数据应用数据库函数。 @Formula
和 @Column
注解不能应用于实体类中的属性。如何在不使用一个属性进行保存并使用另一个属性使用 @Formula
进行读取的情况下实现此功能?
最佳答案
Hibernate 3.5 中有一个新功能,允许您在列读取和写入期间应用数据库函数。详情可见Column Read and Write Expressions文档部分。在您的情况下,您将应用读取表达式,而不是写入表达式,因为触发器会为您处理加密。
不幸的是,您似乎正在使用 Hibernate Annotations,并且该功能尚不可用。您需要使用基于 XML 的映射。下面是读者和作者表达方式的示例。 (它们都是可选的。)
<property name="creditCardNum">
<column name="credit_card_num" not-null="true"
write="encrypt(?)"
read="decrypt(credit_card_num)"/>
</property>
关于java - 带列的 hibernate 公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2742809/