Java QueryDSL和枚举内部字段持久化

Java QueryDSL和枚举内部字段持久化,java,enums,querydsl,Java,Enums,Querydsl,我有带有内部字段的枚举: public enum AccessMode { ALL(1), DEFAULT(2), //etc private int id; //constructor public int getId() {return id;} } 我要做的是将id值从\读取\保存到DB,而不是将字符串文字作为默认选项。 有什么方法可以实现这种行为吗 5年前我看到过一个问题,但可能有些事情已经改变了。您使用QueryDSL的是哪种方言

我有带有内部字段的枚举:

public enum AccessMode {
    ALL(1),
    DEFAULT(2),
    //etc

    private int id;

    //constructor

    public int getId() {return id;}
}
我要做的是将id值从\读取\保存到DB,而不是将字符串文字作为默认选项。 有什么方法可以实现这种行为吗


5年前我看到过一个问题,但可能有些事情已经改变了。

您使用QueryDSL的是哪种方言?JPA?SQL?Mongo?JPA。似乎AttributeConvertorIn JPA枚举字段只能使用其字符串值或序号进行映射。这不是一个领域所能做到的。由于JPA不允许它,QueryDSL也不能为它编写有意义的查询。您链接的问题的答案仍然正确。使用属性转换器可以进行映射,但映射将出现问题,因为必须使用字段类型(整数)进行查询,但元模型将生成实体类型(枚举)的字段。所以你还是会遇到麻烦。我要么将枚举转换为实体,要么使用标准序号映射枚举。您使用QueryDSL的是哪种方言?JPA?SQL?Mongo?JPA。似乎AttributeConvertorIn JPA枚举字段只能使用其字符串值或序号进行映射。这不是一个领域所能做到的。由于JPA不允许它,QueryDSL也不能为它编写有意义的查询。您链接的问题的答案仍然正确。使用属性转换器可以进行映射,但映射将出现问题,因为必须使用字段类型(整数)进行查询,但元模型将生成实体类型(枚举)的字段。所以你还是会遇到麻烦。我要么将枚举转换为实体,要么使用标准序号映射枚举。