在hibernate实体和DTO对象中有主密钥的int id
,对于加密的主密钥id,我有相同的int id
和String encId
。每次我使用BeanUtils.copyProperties()
将实体传输到DTO,将实体复制到DTO时,反之亦然,在下一行中,我将加密/解密并执行db操作。
请您帮助我如何使用AttributeConverter<Integer, String>
和复制bean,我只应该做BeanUtils.copyProperties()
,除了AttributeConverter
之外,不要再使用enc/解密逻辑了。请把实体的样本片段给DTO。
发布于 2018-03-29 13:03:45
实体:
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Convert(converter = IinegerToStringConverter.class)
private Integer span;
}
转换器
@Converter
public class IinegerToStringConverter implements AttributeConverter<Integer,
String> {
@Override
public String convertToDatabaseColumn(Integer value) {
try {
return Integer.toString(number);
}
else throw new IllegalStateException("Invalid number: " +
value);
}
@Override
public Integer convertToEntityAttribute(String number) {
try {
return Integer.parseInt(number);
} catch(Exception e){
throw new IllegalStateException("Invalid number: " +
value);
}
} 这里是一个正在运行的示例
https://stackoverflow.com/questions/49560957
复制