我在hibernate实体中有int id
个主键,在DTO对象中,我对加密的主键id有int id
和String encId
。每当我使用BeanUtils.copyProperties()
将实体转移到DTO以将实体复制到DTO时,在下一行中我将加密/解密并执行数据库操作。
请问您如何使用AttributeConverter<Integer, String>
并复制我应该只执行BeanUtils.copyProperties()
的bean而不是AttributeConverter
以外的其他加密/解密逻辑。请给我一个实体的样本snipet到DTO。
答案 0 :(得分:0)
实体:
@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);
}
} here是一个正在运行的示例