gpt4 book ai didi

java - 在 Spring Data neo4j 中使用 RelationshipEntity 保存节点的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 05:38:58 32 4
gpt4 key购买 nike

实际上,我正在尝试使用 RelationshipEntity 类保存一个节点,如下所示:

  1. 节点类

    @NodeEntity  
    public class MyEvent
    {
    @GraphId
    private Long nodeId;
    @RelatedToVia(type = "INVITED_TO")
    @Fetch Set<EventResponse> eventResponse;
    }
  2. 关系实体类

    @RelationshipEntity(type="INVITED_TO")  
    public class EventResponse implements Serializable
    {
    @GraphId
    Long nodeId;

    @StartNode
    MyEvent event;

    @EndNode
    User user;

    // .....

当我尝试保存 MyEvent

org.neo4j.graphdb.NotFoundException: '__type__' property not found for RelationshipImpl #153 of type 15 between Node[159] and Node[117].

所以我猜基于上述异常,它缺少某处 __type__ 属性,该属性是识别任何节点类型所必需的。我不太明白,有什么方法可以保存第一个关系实体,然后保存 NodeEntity 或 viceversa 或同时保存??

最佳答案

type 属性不需要您明确设置。它由 spring-data-neo4j 管理。

以下代码片段适合我:

事件类:

@NodeEntity
public class MyEvent
{

@GraphId
private Long nodeId;

@RelatedToVia(type = "INVITED_TO")
@Fetch
Set<EventResponse> eventResponse;

}

用户类:

@NodeEntity
public class User
{

@GraphId
private Long userId;

}

响应类:

@RelationshipEntity(type = "INVITED_TO")
public class EventResponse
{

@GraphId
private Long nodeId;

@StartNode
MyEvent event;

@EndNode
User user;

}

我在一个简短的 junit 测试中使用它们:

@Autowired
private Neo4jTemplate template;

@Transactional
@Test
public void saveEvent()
{

User user = new User();
MyEvent event = new MyEvent();

EventResponse response = new EventResponse();
response.user = user;
response.event = event;

this.template.save(user);
this.template.save(event);
this.template.save(response);

}

关于java - 在 Spring Data neo4j 中使用 RelationshipEntity 保存节点的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18397035/

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