2016-06-14 16 views
2

OGMでのサイファークエリの結果を取得しようとしています。 基本的に、私はこのチュートリアルに従っています:OGM TutorialNeo4j OGM MappingException

私は(チュートリアル上のものと同じ)、エンティティ・インターフェースがあります。私は、データベースを投入しています

@NodeEntity 
public class MyClass extends Entity { 
    private String field; 

    @Relationship(type="POINTS", direction=Relationship.OUTGOING) 
    private Set<Motif> next = new HashSet<Motif>(); 

    public MyClass(String field) { 
     this.field = field; 
    } 

    public String getField(){ 
     return this.field; 
    } 

    public void setField(String field) { 
     this.field = field; 
    } 

    public Set<Motif> getNext() { 
     return next; 
    } 

    public void setNext(Set<Motif> next) { 
     this.next = next; 
    } 

} 

public abstract class Entity { 

    private Long id; 

    public Long getId() { 
     return id; 
    } 

    @Override 
    public boolean equals(Object o) { 
     if (this == o) return true; 
     if (o == null || id == null || getClass() != o.getClass()) return false; 

     Entity entity = (Entity) o; 

     if (!id.equals(entity.id)) return false; 

     return true; 
    } 

    @Override 
    public int hashCode() { 
     return (id == null) ? -1 : id.hashCode(); 
    } 
} 

を、私はそれを継承するのMyClassというクラスを持っています問題なく、ブラウザ内でサイファークエリを実行することができます。しかし

、私はこの検索クラスと私のアプリケーションでクエリを実行しようとすると:私は次のエラーを取得する

public class Searcher { 
    public Searcher() { 

    } 

    public void search() { 
     String query = "MATCH (a:MyClass)-[r:POINTS]->(b:MyClass) WHERE a.field='B315' RETURN b"; 
     Iterable<MyClass> objs = Neo4jSessionFactory.getInstance().getNeo4jSession().query(MyClass.class, query, Collections.EMPTY_MAP); 
     for(MyClass obj: objs) { 
      System.out.println(obj.getField()); 
     } 
    } 
} 

:だから私は、何かが欠けている可能性があります明らかに理由

Exception in thread "main" org.neo4j.ogm.exception.MappingException: Error mapping GraphModel to instance of <package>.MyClass 
    at org.neo4j.ogm.context.GraphEntityMapper.mapEntities(GraphEntityMapper.java:145) 
    at org.neo4j.ogm.context.GraphEntityMapper.map(GraphEntityMapper.java:117) 
    at org.neo4j.ogm.context.GraphEntityMapper.map(GraphEntityMapper.java:81) 
    at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.executeAndMap(ExecuteQueriesDelegate.java:111) 
    at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.query(ExecuteQueriesDelegate.java:82) 
    at org.neo4j.ogm.session.Neo4jSession.query(Neo4jSession.java:323) 

Caused by: org.neo4j.ogm.exception.MappingException: Unable to instantiate class <package>.MyClass 
    at org.neo4j.ogm.annotations.EntityFactory.instantiate(EntityFactory.java:137) 
    at org.neo4j.ogm.annotations.EntityFactory.instantiateObjectFromTaxa(EntityFactory.java:110) 
    at org.neo4j.ogm.annotations.EntityFactory.newObject(EntityFactory.java:61) 
    at org.neo4j.ogm.context.GraphEntityMapper.mapNodes(GraphEntityMapper.java:156) 
    at org.neo4j.ogm.context.GraphEntityMapper.mapEntities(GraphEntityMapper.java:142) 
    ... 7 more 
Caused by: java.lang.NoSuchMethodException: <package>.MyClass.<init>() 
    at java.lang.Class.getConstructor0(Class.java:3082) 
    at java.lang.Class.getDeclaredConstructor(Class.java:2178) 
    at org.neo4j.ogm.annotations.EntityFactory.instantiate(EntityFactory.java:133) 
    ... 11 more 

私のMyClassクラスはノードエンティティであってもマッピングできません。

答えて

8

MyClass.javarequires a no arg constructor。これがOGMによってインスタンス化できない理由です。

+0

魅力的な作品です。それは簡単な修正でした。どうもありがとうございました。 提案したようにNodeEntityクラスにno argコンストラクタを追加しました。 – felipepo

+0

知っておいてください、答えを受け入れてください、ありがとう:-) – Luanne

関連する問題