java - 是否可以向 @Column 注释添加功能?

标签 java jpa inheritance annotations

我想知道是否可以向 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/

相关文章:

java - 如何将文本设置为禁用的 JTextArea

java - 设置为更新时,Spring Boot mvc java 应用程序无法运行

Java 重写私有(private)与公共(public)

java - 录制声音,然后在Android上使用/保存声音

java - SecureAST定制器 : how to restrict loops?

java - EntityManager.merge 没有做任何事情

C++'98 - 将基类转换为派生类

Java - 通过构造函数将泛型列表传递给类

java - Android json listview 与数组不工作

java - 使用 JPA/Hibernate Criteria 在日期之间拉动