我构建了一个EMF模型,该模型应该指示允许存储在Neo4J数据库实例中的实体类型。
然后,我想用Neo4J OGM(版本3.2.28)注释EMF模型类,以尽可能轻松地与Neo4J连接。
它看起来像这样:
BaseElement
并且是抽象的。中的字段用 注释。ToolNameArtefact
uuid
BaseElementImpl
org.neo4j.ogm.annotation.Id
现在,当我尝试通过 Session#save() 存储实例时,我收到以下错误消息:ConcreteArtefact
org.neo4j.ogm.exception.core.MappingException: 对于实体 foo.bar.ConcreteArtefact@64d43929 (uuid: 7745782f-2c61-4450-985a-8cf2986afa49, projectName: ) at org.neo4j.ogm.context.MappingContext.nativeId(MappingContext.java:556) at org.neo4j.ogm.cypher.compiler.CypherContext.getIdentity(CypherContext.java:66) at org.neo4j.ogm.cypher.compiler.CypherContext.visitedNode(CypherContext.java:90) atorg.neo4j.ogm.context.EntityGraphMapper.mapEntity(EntityGraphMapper.java:267) at org.neo4j.ogm.context.EntityGraphMapper.map(EntityGraphMapper.java:170) at org.neo4j.ogm.session.delegates.SaveDelegate.lambda$save$1(SaveDelegate.java:89) at java.util.Collections$SingletonList.forEach(Collections.java:4822) at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:89) at org.neo4j.ogm.session.Neo4jSession.save(Neo4jSession.java:479)
虽然字段设置得很清楚。uuid
我的包名称都是小写的。
将注释移动到接口而不是实现类没有帮助。NodeEntity
有问题的类有一个无参数构造函数。
这种行为是Neo4J OGM本身的问题。开发人员在此线程中回答说,该问题将在将来的版本中修复(从3.2.29
)