在Neptune,我在Gremlin Library(Java)的帮助下创建了一个顶点:
var createdVertex = g.addV(vertex.getArtifactType());
createdVertex.property(T.id, vertexId); => UUID String
createdVertex.property(Cardinality.single, ARN, vertex.getArn()); => String
createdVertex.property(Cardinality.single, ARTIFACT_TYPE, vertex.getArtifactType()); => String
createdVertex.property(Cardinality.single, DISPLAY_NAME, vertex.getDisplayName()); => String
createdVertex.property(Cardinality.single, CREATED_AT, vertex.getCreatedAt()); => Timestamp
createdVertex.property(Cardinality.single, UPDATED_AT, vertex.getUpdatedAt()); => Timestamp
在这里,一切都按预期工作!
现在,我想在另一个库上尝试一下,这使我能够像JPA/Hibernate一样从CRUD操作和自动映射中受益。然后,我看看Neo4J OGM库。
我做一个简单的会话。loadall(类)
我的问题发生在由Neo4J-OGM完成的自动映射中。我认为Neo4J主要是为了与cypher基础符合Neo4J服务器的开发。但是,由于AWS Neptune都符合(开放的)Cypher和Gremlin Apache/Tinkerpop,因此我认为我可以轻松地将Neo4J OGM与AWS Neptune一起使用。我目前遇到的问题是以下内容:
使用NEO4J注释下面的班级
@NodeEntity
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Vertex {
private String id;
@NotBlank
private String arn;
@NotBlank
private String artifactType;
@NotBlank
private String displayName;
@NotNull
private Long createdAt;
@NotNull
private Long updatedAt;
private Map<String, Object> properties;
@Id
@Property(name = "id")
private String id;
@Id
@Property(name = "~id")
private String id;
@Id
@Property(name = "`~id`")
private String id;
@Id
@Property(name = "nodeId")
private String nodeId;
@Id
@Property(name = "~nodeId")
private String nodeId;
@Id
@Property(name = "`~nodeId`")
private String nodeId;
没有AB的解决方案允许我(通过OGM)用字符串UUID检索完整的顶点对象。我想念或错过什么? thanks对于任何建议
Neo4J OGM库靶向Neo4J服务器,并且与AWS Neptune不兼容。两个DBMS系统太差异了。 您不应该假设任何仅与Neo4J一起使用的工具都会适用于其他DBM,即使他们声称支持OpencyPher,这与Cypher不同。无论如何,Cypher只是整个NEO4J生态系统的一部分。
也是引用
neptune用户指南:“尽管在许多方面兼容,但海王星不是neo4j的倒数替换。”