我想知道是否可以向 JPA 中的 @Column
注释添加附加功能。具体来说,我想做的是使用 @ProtectedColumn 注释来标记敏感数据列:然后,这将告诉持久性框架应用某种类型的数据保护(加密、标记化等)。 ) 将值存储到实际数据存储中时,然后在从数据存储中读取值时反转该过程。
所以我可能有一个包含以下代码的 Customer
类:
@Column(value="Name")
private String name;
@ProtectedColumn(value="CreditCardNumber", protectionType="ultra")
private String creditCardNumber;
这将存储使用保护类型“ultra”(无论是什么)保护信用卡号的结果,而不是存储实际的信用卡号。
显然,我不想重新实现 @Column
注释中已经存在的所有数据库访问功能:我只想扩展其功能。我知道注释不能直接扩展(请参阅 Why is not possible to extend annotations in Java? ),但在我看来,可能可以在值到达 @Column
之前拦截该值注解,因此字段定义可能如下所示:
@Protected(protectionType="ultra")
@Column(value="CreditCardNumber")
private String creditCardNumber;
所以我的第一个问题是这在理论上是否可能:如果是这样,我将不胜感激任何有关如何以这种方式组合/扩展注释的指示。
最佳答案
您可以使用转换器。例如,您可以像他一样实现转换器:
use converter
他使用xml配置。
如果你想使用注释,只需看看这个 git 存储库中的这两个 java 类:jpa converter with annotation
因此你可以使用注释
@Convert(converter = JPACryptoConverter.class)
(假设 JPACryptoConverter 是 AttributeConverter 的子级)。
关于java - 是否可以向 @Column 注释添加功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43628222/