Hibernate属性转换器整数和字符串

时间:2018-03-29 16:28:33

标签: java hibernate

我在hibernate实体中有int id个主键,在DTO对象中,我对加密的主键id有int idString encId。每当我使用BeanUtils.copyProperties()将实体转移到DTO以将实体复制到DTO时,在下一行中我将加密/解密并执行数据库操作。

请问您如何使用AttributeConverter<Integer, String>并复制我应该只执行BeanUtils.copyProperties()的bean而不是AttributeConverter以外的其他加密/解密逻辑。请给我一个实体的样本snipet到DTO。

1 个答案:

答案 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是一个正在运行的示例