我有一个带有列的表,插入记录后,该列将由触发器加密。当我阅读该专栏文章时,我需要在休眠域类中应用解密函数。
保存对象时,该列的值将照此保存。读取列时,对读取的数据应用数据库功能。 @Formula
和@Column
注释不能应用于实体类中的属性。如何在不使用一个属性进行保存而使用另一个属性与@Formula
进行读取的情况下实现此功能?
最佳答案
Hibernate 3.5中有一项新功能,可让您在列读取和写入期间应用数据库功能。可以在文档的Column Read and Write Expressions部分中找到详细信息。在您的情况下,您将应用读表达式,而不是写表达式,因为触发器将为您处理加密。
不幸的是,您似乎正在使用休眠注释,并且此功能尚不可用。您需要使用基于XML的映射。这是阅读器和书写器表达式的外观示例。 (它们都是可选的。)
<property name="creditCardNum">
<column name="credit_card_num" not-null="true"
write="encrypt(?)"
read="decrypt(credit_card_num)"/>
</property>