我希望在我的数据库中保存Enum,但只保存值,而不是名称。例如,我使用CODE_3
保存对象,因此在我的数据库中,应该是 ActCode : "3"
,而不是ActCode : "CODE_3"
。但是当我找到该对象时,它应该返回为 ActCode.CODE_3
,而不是String "3"
。
我有一个这样的枚举:
public enum ActCode {
CODE_3("3"),
CODE_4("4"),
CODE_6("6"),
CODE_7("7"),
CODE_12("12"),
CODE_13("13"),
CODE_14("14"),
CODE_15("15"),
CODE_16("16"),
CODE_17("17"),
CODE_18("18"),
CODE_19("19"),
CODE_20("20"),
CODE_23("23")
private String value;
private ActCode(String value) {
this.value = value;
}
@Override
public String toString() {
return this.value;
}
}
这是我的班级:
@NodeEntity
public class TestEnum {
@GraphId
Long graphId;
String id;
String name;
@Enumerated(EnumType.STRING)
ActCode actCode;
}
这就是我在我的服务中保存课程的方式:
TestEnum test = new TestEnum("Enum 1",ActCode.CODE_3);
testEnumRepository.save(test);
我也尝试使用转换器,这是我的reference
我正在使用Spring 4.3.3.RELEASE
,Hibernate 5.0.11.Final
,SDN4.1.3-RELEASE
和neo4j-ogm-2.0.5
。
答案 0 :(得分:0)
目前使用@Convert
将不会在java.util.Enum
上应用转换器,因为OGM有一个默认转换器,目前无法覆盖。
如果你需要一些工作,那么你可以使ActCode
成为@NodeEntity
并为数据库本身的枚举构建相同的值。
它并不完美,但在添加此功能之前,它至少会解决问题。与此同时,您可以使用Neo4j OGM Github提出增强请求,以允许自定义转换器与枚举一起使用。
另外,仅供参考:Neo4j-OGM和Spring Data Neo4J不支持@Enumerated
等JPA注释。