2010-04-30 55 views
1

我有一個表,列中插入記錄後將由觸發器加密。當我閱讀專欄時,我需要在休眠域類中應用解密函數。hibernate公式與列

保存對象時,列的值將被保存。讀取列時,在讀取的數據上應用數據庫功能。 @Formula@Column註釋不能應用於實體類中的屬性。如何在不使用一個屬性進行保存的情況下實現此功能,而使用@Formula進行讀取?

+0

我在某種程度上錯過了我的答案中的一個重要部分。讓我重新思考它... – 2010-04-30 09:21:09

回答

1

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>