首页 > 解决方案 > Neo4j 映射异常

问题描述

MappingException执行以下代码时出现错误:

Configuration configuration = new Configuration.Builder()
                    .uri("file:///var/lib/neo4j/data/databases/graph.db")
                    .credentials("neo4j","noor")
                    .build();

            SessionFactory sessionFactory = new SessionFactory(configuration,"OntologyDescription","info.testNeo");
            Session session = sessionFactory.openSession();
            ResourceDescription classDescription = OntologyUtils.getClassDescription(classIRI,
                    dogont);
            session.save(classDescription);
            sessionFactory.close();

完整跟踪:

Exception in thread "main" org.neo4j.ogm.exception.core.MappingException: Field with primary id is null for entity state
    at org.neo4j.ogm.context.MappingContext.nativeId(MappingContext.java:514)
    at org.neo4j.ogm.context.EntityGraphMapper.newNodeBuilder(EntityGraphMapper.java:318)
    at org.neo4j.ogm.context.EntityGraphMapper.mapEntity(EntityGraphMapper.java:257)
    at org.neo4j.ogm.context.EntityGraphMapper.mapRelatedEntity(EntityGraphMapper.java:797)
    at org.neo4j.ogm.context.EntityGraphMapper.link(EntityGraphMapper.java:501)
    at org.neo4j.ogm.context.EntityGraphMapper.mapEntityReferences(EntityGraphMapper.java:414)
    at org.neo4j.ogm.context.EntityGraphMapper.mapEntity(EntityGraphMapper.java:265)
    at org.neo4j.ogm.context.EntityGraphMapper.map(EntityGraphMapper.java:149)
    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.delegates.SaveDelegate.save(SaveDelegate.java:51)
    at org.neo4j.ogm.session.Neo4jSession.save(Neo4jSession.java:468)
    at Examples.TestNeo4j.main(TestNeo4j.java:41)

classDescription只有从该OntologyUtils.getClassDescription方法中获取时,我才会收到错误。但是,如果我实例化一个ResourceDescription新的,我不会得到错误。简而言之,OntologyUtils.getClassDescription调用其他几个方法将信息添加到新实例。

标签: neo4jneo4j-ogm

解决方案


这个问题是因为包名包含大写字母。正如这个GitHub issue中提到的,包名应该完全小写


推荐阅读