首页 > 解决方案 > 尝试应用 AttributeConverter 时出错;嵌套异常是 javax.persistence.PersistenceException:尝试应用 AttributeConverter 时出错

问题描述

我正在尝试使用此链接https://thorben-janssen.com/hibernate-enum-mappings/中的示例将我的枚举值映射到我的 postgres 数据库中, 使用转换器来持久化枚举的值,

但我不断收到此错误

我的枚举

public enum Rating {
    ONE, TWO, THREE, FOUR, FIVE
}

转换器

@Converter
public class RatingAttributeConverter implements AttributeConverter<Rating, Integer> {
 
    @Override
    public Integer convertToDatabaseColumn(Rating attribute) {
        if (attribute == null)
            return null;
 
        switch (attribute) {
        case ONE:
            return 1;
 
        case TWO:
            return 2;
 
        case THREE:
            return 3;
 
        case FOUR:
            return 4;
 
        case FIVE:
            return 5;
 
        default:
            throw new IllegalArgumentException(attribute + " not supported.");
        }
    }
 
    @Override
    public Rating convertToEntityAttribute(Integer dbData) {
        if (dbData == null)
            return null;
 
        switch (dbData) {
        case 1:
            return Rating.ONE;
 
        case 2:
            return Rating.TWO;
 
        case 3:
            return Rating.THREE;
 
        case 4:
            return Rating.FOUR;
 
        case 5:
            return Rating.FIVE;
 
        default:
            throw new IllegalArgumentException(dbData + " not supported.");
        }
    }
 
}

我的课

@Entity
public class Review {
 
    @Id
    @GeneratedValue
    private Long id;
 
    private String message;
 
    @Convert(converter = RatingAttributeConverter.class)
    private Rating rating;
     
   //getters and setters
}

PS:我尝试使用 @Converter(autoApply=true) 但它也不起作用。 请有人可以帮我找到解决方案

标签: javasqlpostgresqlspring-boothibernate

解决方案


推荐阅读