【问题标题】:searching for object with custom id搜索具有自定义 ID 的对象
【发布时间】:2018-12-31 20:26:54
【问题描述】:

我有一个看起来像这样的课程

@Data
@NodeEntity
public class StoryCharacter {
    @Index(unique = true)
    private String agnosticId;
    private String name;

    @Relationship(type = "FAMILIAR_WITH")
    private Set<StoryCharacter> acquaintances;
}

我需要一个与默认 long id 无关的自定义 ID。于是我引入了一个字段,设置为index

但是如何通过那个 id 找到对象呢?

我想这样做

session.openSession().load(StoryCharacter.class, "custom_id")

但它失败并出现错误,它必须是Long。我假设我可能需要使用 Filter 对象来按该 ID 进行搜索。还是有别的办法?

【问题讨论】:

    标签: java neo4j neo4j-ogm


    【解决方案1】:

    如果您想使用自定义 id,则必须使用 @Id 而不是 @Index(unique=true) 注释该字段。如果您不想手动设置 id,可以选择提供 id 生成策略(更多详细信息in the documentation

    您看到此错误是因为 Neo4j-OGM 无法确定您的 id 字段的类型并回退到标准 Long。如果您如上所述定义您的 id,load 将起作用。

    【讨论】:

    • 所以我可以创建@Id 字段而不需要Long id 字段?因为我认为long id 是必需的。
    • 没错。如果您自己处理应用程序中的 id 处理,Neo4j-OGM 将使用它而不是依赖内部 id。
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2014-08-24
    • 1970-01-01
    • 2012-06-20
    • 2013-04-03
    • 2019-04-18
    • 1970-01-01
    • 2018-12-13
    相关资源
    最近更新 更多