JPA 2.1 属性转换器 convert enum still insert int

JPA 2.1 Attribute Converter convert enum still insert int

我正在使用 spring 数据 jpa,以休眠作为提供程序。 我试图在 varchar(enum.tostring) 而不是 (0,1,2) 上保留我的枚举 我的枚举 class:

public enum MagasinType {
PRINCIPAL {
    @Override
    public String toString() {
        return "Principale".toUpperCase();
    }
},
SECONDARY {
    @Override
    public String toString() {
        return "Secondaire".toUpperCase();
    }
},
MOBILE {
    @Override
    public String toString() {
        return "Mobile".toUpperCase();
    }
};
public abstract String toString();
}

我的转换器

@Converter(autoApply = true)
public class MagasinConverter implements attributeConverter           <MagasinType,String>{

@Override
public String convertToDatabaseColumn(MagasinType magasinType) {
    switch (magasinType){
        case MOBILE:return "MOBILE";
        case PRINCIPAL:return "PRINCIPAL";
        case SECONDARY:return "SECONDARY";
        default:throw new IllegalArgumentException("valeur incorrecte" + magasinType);
    }
}

@Override
public MagasinType convertToEntityAttribute(String s) {
    switch (s){
        case "MOBILE": return MagasinType.MOBILE;
        case "SECONDARY": return MagasinType.SECONDARY;
        case "PRINCIPAL": return MagasinType.PRINCIPAL;
        default:throw new IllegalArgumentException("valeur incorrecte" + s);
    }}}

我的实体

 @Entity
 @Table(name = "MAGASIN")
 public class Magasin extends AbstractEntity {

@Column(name = "LIBELLE", nullable = false)
private String libelle;

@Column(name = "DESCR")
private String descr;


@Convert(converter = MagasinConverter.class)
private MagasinType type;

@Column(name = "LOCATION")
private String localisation;

@Version
private long version;
//getters setters omitted
}

我的 java 配置:https://gist.github.com/anonymous/480ef7a58cdcc50e7481

我的 app.properties : https://gist.github.com/anonymous/685eaca98fcba9c33872

最后是我的测试方法:https://gist.github.com/anonymous/8bb60fee39a201558e19

请帮助我,我想使用@convert 新的 jpa2.1 功能而不是 @枚举

我试着把注释放在 getter 上,它起作用了。

现在我可以调用@convert 将枚举转换为字符串,并在从数据库中提取时进行反之亦然。

当我在我的 class 属性上添加 @manytoOne 时发生了同样的问题,我遇到了一个奇怪的问题,没有列被添加到 table 实体。

但是当我注释 getter 时。一切都很好。 请查看我的 github 回购以获得更多信息

https://github.com/zirconias/RFID_REWRITE