【问题标题】:Hibernate Attribute Converter Integer and StringHibernate 属性转换器整数和字符串
【发布时间】:2018-03-29 16:28:33
【问题描述】:

我在休眠实体和 DTO 对象中有int id 的主键,我有相同的int idString encId 用于加密的主键ID。每次当我使用BeanUtils.copyProperties() 将实体转移到 DTO 以将实体复制到 DTO 时,反之亦然,在下一行中,我将加密/解密并执行 db 操作。

您能帮我如何使用AttributeConverter<Integer, String> 并复制bean,我应该只做BeanUtils.copyProperties() 并且除了AttributeConverter 之外没有更多的enc/decrypt 逻辑。请给我实体到 DTO 的示例片段。

【问题讨论】:

标签: java hibernate


【解决方案1】:

实体:

@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 是一个运行示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2019-02-15
    相关资源
    最近更新 更多