【发布时间】:2018-09-17 00:21:25
【问题描述】:
我有一个 Spring Boot 应用程序,它为将枚举从大写转换为标题大小写以存储在数据库中的实体指定 AttributeConverter。
我有以下实体:
@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) 似乎都不会触发转换。
【问题讨论】:
标签: java spring hibernate spring-boot spring-data-jpa