繁体   English   中英

Spring Data JPA在Spring Boot Application中没有使用AttributeConverter

[英]Spring Data JPA not using AttributeConverter in Spring Boot Application

我有一个spring boot应用程序,它为一个实体指定一个AttributeConverter ,它将枚举从大写转换为title case以便存储在数据库中。

我有以下实体:

@Entity
@Table(name = "customerleads")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class CustomerLead implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Enumerated(EnumType.STRING)
    @Column(name = "type")
    @Convert(converter = CustomerLeadTypeConverter.class)
    private CustomerLeadType type = CustomerLeadType.OPEN;
}

以下是AttributeConverter类:

@Converter(autoApply = true)
public class CustomerLeadTypeConverter implements AttributeConverter<CustomerLeadType, String> {

    @Override
    public String convertToDatabaseColumn(CustomerLeadType attribute) {
        switch (attribute) {
            case OPEN:
                return "Open";
            case CLOSED:
                return "Closed";
            case DELETED:
                return "Deleted";
            default:
                throw new IllegalArgumentException("Unknown" + attribute);
        }
    }

    @Override
    public CustomerLeadType convertToEntityAttribute(String dbData) {
        switch (dbData) {
            case "Open":
                return OPEN;
            case "Closed":
                return CLOSED;
            case "Deleted":
                return DELETED;
            default:
                throw new IllegalArgumentException("Unknown" + dbData);
        }
    }
}

@Converter(autoApply = true)@Convert(converter = CustomerLeadTypeConverter.class)似乎都不会触发转换。

删除@Enumerated(EnumType.STRING)

// @Enumerated(EnumType.STRING)
@Column(name = "type")
@Convert(converter = CustomerLeadTypeConverter.class)
private CustomerLeadType type = CustomerLeadType.OPEN;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM