Neo4J OGM MappingException:具有主 ID 的字段对于 EMF class 为空
Neo4J OGM MappingException: Field with primary id is null for EMF class
我构建了一个 EMF 模型,该模型应指示允许存储在 Neo4J 数据库实例中的实体类型。
然后我想用 Neo4J OGM(版本 3.2.28)注释 EMF 模型 类 以尽可能轻松地保持与 Neo4J 的连接。
看起来像这样:
BaseElement
和 ToolNameArtefact
是抽象的。 BaseElementImpl
中的字段uuid
被注释为org.neo4j.ogm.annotation.Id
。
现在,当我尝试通过 Session#save() 存储 ConcreteArtefact
的实例时,我收到以下错误消息:
org.neo4j.ogm.exception.core.MappingException: Field with primary id is null for entity 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)
at org.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(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
annotations to the interfaces instead of the implementing classes 没有帮助。
有问题的类有一个。
此行为是 Neo4J OGM 本身的问题。一位开发者在 this thread 中回答说该问题将在未来的版本中修复(从 3.2.29
开始)
我构建了一个 EMF 模型,该模型应指示允许存储在 Neo4J 数据库实例中的实体类型。
然后我想用 Neo4J OGM(版本 3.2.28)注释 EMF 模型 类 以尽可能轻松地保持与 Neo4J 的连接。
看起来像这样:
BaseElement
和 ToolNameArtefact
是抽象的。 BaseElementImpl
中的字段uuid
被注释为org.neo4j.ogm.annotation.Id
。
现在,当我尝试通过 Session#save() 存储 ConcreteArtefact
的实例时,我收到以下错误消息:
org.neo4j.ogm.exception.core.MappingException: Field with primary id is null for entity 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) at org.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(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
annotations to the interfaces instead of the implementing classes 没有帮助。
有问题的类有一个
此行为是 Neo4J OGM 本身的问题。一位开发者在 this thread 中回答说该问题将在未来的版本中修复(从 3.2.29
开始)