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

SDN 5.0.2.RELEASE中@NodeEntity的@Id@GeneratedValue是否唯一且不被回收?

在SDN 5.0.2.RELEASE中使用@Id+@GeneratedValue的唯一性与回收问题

首先可以明确地说:在SDN 5.0.2.RELEASE版本中,用@Id搭配@GeneratedValue生成的实体ID是唯一且不会被回收复用的,完全避开了早期版本里Neo4j内部ID的坑。

具体原因得从SDN的ID生成机制说起:

  • 首先,SDN 5.x默认的@GeneratedValue策略和Neo4j的内部ID完全无关。它有两种默认生成逻辑,取决于你的ID字段类型:

    • 如果ID是Long/long类型(就像你示例里的Movie类那样),SDN会使用IncrementalIdGenerator:它会在Neo4j库中创建一个专门的__NextId__节点来维护全局的ID计数器,每次创建新实体时,这个计数器会递增并分配新ID。就算你删除了某个实体,这个计数器也不会回退,所以生成的ID永远不会重复,更不会被回收复用。
    • 如果ID是String类型,默认会用UUIDStringGenerator生成UUID字符串,这种ID本身就是全局唯一的,自然不存在重复或被回收的问题。
  • 至于你提到的早期版本不建议用Neo4j内部ID的问题,那是因为当时如果直接映射Neo4j的内部节点ID(也就是调用节点id()方法返回的值)作为实体主键,确实会有被回收复用的风险——当你删除节点后,这个ID可能会被分配给新创建的节点。但在SDN 5.0.2里,只有当你显式指定@GeneratedValue(strategy = GenerationType.IDENTITY)时,才会映射到Neo4j的内部ID,而默认的@GeneratedValue是不会这么做的。

所以总结下来,只要你用的是默认的@Id @GeneratedValue配置(没有指定IDENTITY策略),就完全不用担心ID重复或者被回收的问题,可以放心使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:38:15