You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用@RelationshipProperties与@TargetNode实现Spring Data Neo4j关系实体

Spring Data Neo4j 6+ 关系实体升级实现方案

SDN 6及以上版本已废弃原有的@RelationshipEntity注解,改用@RelationshipProperties标注带属性的关系类,搭配@TargetNode指定关系指向的目标节点,具体升级代码如下:

1. 关系属性类实现

import org.springframework.data.neo4j.core.schema.RelationshipId;
import org.springframework.data.neo4j.core.schema.RelationshipProperties;
import org.springframework.data.neo4j.core.schema.TargetNode;

@RelationshipProperties
public class RelationshipValue {

    @RelationshipId
    private Long graphId;

    // 对应原@EndNode标注的目标节点
    @TargetNode
    private Characteristic characteristic;

    // 若关系本身有其他自定义属性(如权重、创建时间等),可直接在此类中添加对应字段
}

2. 起始节点类关联配置

原@StartNode标注的起始节点不需要定义在关系属性类中,需要移到起始节点实体的关系关联字段处,示例如下:

import org.springframework.data.neo4j.core.schema.Id;
import org.springframework.data.neo4j.core.schema.Node;
import org.springframework.data.neo4j.core.schema.Relationship;
import java.util.List;

@Node
public class Decision {
    
    @Id
    private Long id;
    // 其他节点属性省略
    
    // 指定关系类型、方向,关联上面定义的关系属性类
    @Relationship(type = "HAS_VALUE_ON", direction = Relationship.Direction.OUTGOING)
    private List<RelationshipValue> characteristicValues;
}

注意事项

  • 原@GeneratedValue注解无需再添加,SDN会自动处理关系ID的生成逻辑,仅需用@RelationshipId标注主键字段
  • 如果需要双向关联,可在Characteristic节点类中定义入方向的关系字段,指定direction = Relationship.Direction.INCOMING即可
  • 所有节点实体(Decision、Characteristic)都需要添加@Node注解完成标注

内容的提问来源于stack exchange,提问作者alexanoid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 00:57:03