gpt4 book ai didi

java - Spring -Neo4j 数据库 : Save Enum String to Database and Return as Enum

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:54 25 4
gpt4 key购买 nike

我想将该枚举保存在我的数据库中,但只保存值,而不是名称。例如,我使用 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;
}
}

这是我的类(class):

@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);

当我查看数据库时,结果如下: enter image description here

我也尝试过使用转换器,这是我的reference

我正在使用 Spring 4.3.3.RELEASEHibernate 5.0.11.FinalSDN4.1.3-RELEASEneo4j-ogm-2.0.5

最佳答案

目前使用@Convert不会在java.util.Enum上应用转换器,因为OGM有一个默认转换器,目前无法覆盖。

如果您需要让某些东西正常工作,那么您可以将 ActCode 设为 @NodeEntity 并为数据库本身中的枚举构建相同的值。

它并不完美,但至少可以解决问题,直到添加此功能。同时,您可以向 Neo4j OGM Github 提出增强请求,以允许自定义转换器使用枚举。

另请注意:Neo4j-OGM 和 Spring Data Neo4J 不支持 JPA 注释,例如 @Enumerated

关于java - Spring -Neo4j 数据库 : Save Enum String to Database and Return as Enum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41296270/

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