我想知道是否可以在JPA中的@Column
註釋中添加其他功能。具體來說,我想要做的是使用@ProtectedColumn
批註標記敏感數據列:然後,這會告訴持久性框架在將值存儲到數據時應用某種類型的數據保護(加密,標記化,無論...)實際的數據存儲,然後在讀取數據存儲中的值時反轉該過程。是否可以向@Column註釋添加功能?
所以我可能有一個Customer
類,其中包括此代碼:
@Column(value="Name")
private String name;
@ProtectedColumn(value="CreditCardNumber", protectionType="ultra")
private String creditCardNumber;
代替存儲實際的信用卡號碼,這會然後存儲保護與保護類型的信用卡號的結果,「超「(無論如何)。
很明顯,我不想重新實現@Column
註釋中已經存在的所有數據庫訪問功能:我只想擴展它的功能。我知道,註釋不直接擴展(見Why is not possible to extend annotations in Java?),但在我看來,它可能有可能攔截值它到達@Column
註解之前,所以也許字段定義是這樣的:
@Protected(protectionType="ultra")
@Column(value="CreditCardNumber")
private String creditCardNumber;
所以,我的第一個問題是,這是否甚至在理論上是可能的:如果是這樣,我會很感激任何關於如何組合/擴展註釋的方法。
由於持久性框架需要知道您的註釋,因此您可以安全地得出結論:不可能(不使用JPA提供程序細節)。 –
使用JPA轉換器怎麼樣? http://www.thoughts-on-java.org/jpa-21-how-to-implement-type-converter/ –
@AlanHay:完美。我不知道JPA轉換器存在。如果你認爲這是一個回答而不是評論,那麼你就會得到代表性的迴應:-(相反,你只剩下我的感激之情 –