gpt4 book ai didi

java - Hibernate Converter + 在 Converter 中检索属性名

转载 作者:行者123 更新时间:2023-12-05 07:37:28 28 4
gpt4 key购买 nike

我们正在尝试使用 hibernate Converter 来加密/解密通过 hibernate 存储的几列数据

@Convert(attributeName="myattr",converter=DataEncryptionConverter.class)
private String actualValue;

计划是基于数据类型(字符串、日期等)实现可重用的转换器。

然而,计划是维护一个配置模板,指示是否应打开/关闭字段加密=

方法

@Converter
public class DataEncryptionConverter implements AttributeConverter<String,String>{
private static Logger logger = LoggerFactory.getLogger(DataEncryptionConverter.class);
@Override
public String convertToDatabaseColumn(String arg0) {
logger.info("convertToDatabase>input:"+arg0);
if(attributeName matches (TemplateList)) {
//check if the attributeName is part of approved TemplateList where data needs to be encrypted
return encryptData(arg0);
}
else {
return arg0;
}
}
@Override
public String convertToEntityAttribute(String arg0) {
logger.info("convertToEntity>input:"+arg0);
if(attributeName matches (TemplateList)) {
//check if the attributeName is part of approved TemplateList where data needs was encrypted
return deCryptData(arg0);
}
else {
return arg0;
}
}

}

那么,有什么方法可以检索设置为 @Converter 的一部分的 attributeName 吗?

最佳答案

我还寻找一种方法将参数从实体字段传递到转换器,

我在@Convert 类中找到了AttributeName 参数,然后去检查它的作用。

但是,令我遗憾的是,我发现 AttributeName 并不是要将数据传输到 Converter

这就是 AttributeName 的用途:

来自documentation @Convert 类:

AttributeName 元素必须指定给嵌入属性或映射集合属性,其键或值是可嵌入类型(在这种情况下,转换器应用于集合中包含的可嵌入实例的指定属性)

attributeName 元素不得指定到基本属性或基本类型的元素集合(在这种情况下,转换器应用于集合的元素)

AttributeName 用法示例:

将转换器应用于基本类型的映射键:

 @OneToMany
@Convert(converter=ResponsibilityCodeConverter.class,
attributeName="key")
Map<String, Employee> responsibilities;

将转换器应用于可嵌入的属性:

 @Embedded
@Convert(converter=CountryConverter.class,
attributeName="country")
Address address;

将转换器应用于嵌套的可嵌入属性:

 @Embedded
@Convert(converter=CityConverter.class,
attributeName="region.city")
Address address;

将转换器应用于作为映射键的可嵌入对象的嵌套属性元素集合的:

 @Entity public class PropertyRecord {
...
@Convert(attributeName="key.region.city",
converter=CityConverter.class)
@ElementCollection
Map<Address, PropertyInfo> parcels;
}

将转换器应用于作为关系映射键的可嵌入对象:

 @OneToMany
@Convert(attributeName="key.jobType",
converter=ResponsibilityTypeConverter.class)
Map<Responsibility, Employee> responsibilities;

覆盖从映射父类(super class)继承的属性的转换映射:

 @Entity
@Converts({
@Convert(attributeName="startDate",
converter=DateConverter.class),
@Convert(attributeName="endDate",
converter=DateConverter.class)})
public class FullTimeEmployee extends GenericEmployee { ... }

我仍在寻找如何将参数传递给转换器的解决方案,欢迎了解如何继续使用转换器类并将参数从转换字段发送到转换器

关于java - Hibernate Converter + 在 Converter 中检索属性名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48575152/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com