gpt4 book ai didi

java - Spring Data JPA 不在 Spring Boot 应用程序中使用 AttributeConverter

转载 作者:行者123 更新时间:2023-11-29 08:29:13 25 4
gpt4 key购买 nike

我有一个 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) 似乎都不会触发转换。

最佳答案

删除 @Enumerated(EnumType.STRING):

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

关于java - Spring Data JPA 不在 Spring Boot 应用程序中使用 AttributeConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49701819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com