为了账号安全,请及时绑定邮箱和手机立即绑定

在 Neo4J Spring Boot OGM 上的关系实体中保存子类或数组列表

在 Neo4J Spring Boot OGM 上的关系实体中保存子类或数组列表

倚天杖 2021-10-20 16:15:18
我有一个关于如何在关系实体中保存子类或 ArrayList 的查询?我的问题:当我将数据从存储库传递给 save 调用以将 Child 作为 Parent 的一部分保存时,没有问题或错误,但是当我在数据库中检索或查找时,没有数据存在。家长班:@RelationshipEntity(type = "HAS_DATA")public class Parent{private Long id;private Long sequenceId;Set<Child> = new HashSet<>();@StartNodeSomeClass1 someClass1;@EndNodeSomeClass2 someClass2;//Getter and Setters}儿童班:public class Child{Long Id;String name;//Getters and Setters}我如何实现这一目标?
查看完整描述

2 回答

?
森栏

TA贡献1810条经验 获得超5个赞

看看AttributeConverter注释,但是如果您需要关系上的值集合,请考虑重构您的模型,使其成为具有相关内容的节点。


例子:


这是一个示例属性转换器(在 Kotlin 中),它在 Neo4j 中将字符串数组属性转换为/从字符串数组属性转换为 Java 类型。


class RoleArrayAttributeConverter : AttributeConverter<Array<Role>, Array<String>>

{


    override fun toEntityAttribute(value: Array<String>): Array<Role>

    {

        return value.map { Role.valueOf(it) }.toTypedArray()

    }


    override fun toGraphProperty(value: Array<Role>): Array<String>

    {

        return value.map { it.toString() }.toTypedArray()

    }


}


查看完整回答
反对 回复 2021-10-20
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

根据@Jasper Blues 的建议,我用 Java 创建了自己的转换器。回答我自己的问题,因为我无法在评论中添加这个。


public class ChildConverter implements AttributeConverter<Set<Child>, String> {


ObjectMapper mapper = new ObjectMapper();


@Override

public String toGraphProperty(Set<Child> data) {

    String value = "";

    try {

        value = mapper.writeValueAsString(data);

    } catch (JsonProcessingException e) {

        e.printStackTrace();

    }

    return value;

}


@Override

public Set<Child> toEntityAttribute(String data) {

    Set<Child> mapValue = new HashSet<Child>();

    TypeReference<Set<Child>> typeRef = new TypeReference<Set<Child>>() {

    };

    try {

        mapValue = mapper.readValue(data, typeRef);

    } catch (IOException e) {

        e.printStackTrace();

    }

    return mapValue;

}

}


确保在父类中添加@Convert 注解。


 @Convert(converter = ChildConverter.class)

 Set<Child> = new HashSet<>();


查看完整回答
反对 回复 2021-10-20
  • 2 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信