0

パスを返すクエリを実行しようとしていますが、で実行された同じクエリneo4j Web UIは正しい結果を返しますがneo4j-ogmnull. neo4j-ogm-api,core:2.0.0-M01Mavenからインストールしました。

私のJavaコードは次のようになります:

ルート.java:

@NodeEntity
public class Root
{
    @GraphId
    public Long id;

    @Relationship(type = "Branch", direction = Relationship.OOUTGOING)
    public List<Branch> branches = new ArrayList<>();

    public Branch addLeaf(Leaf leaf, float length)
    {
        Branch b = new Branch(this, leaf);
        b.length = length;
        leaf.branch = b;
        branches.add(b); 
        return b;           
    }
}

Leaf.java:

@NodeEntity
public class Leaf
{
    @GraphId
    public Long id;

    @Property
    public String color;

    @Relationship(type = "Branch", direction = Relationship.INCOMING)
    public Branch branch;
}

Branch.java:

@RelationshipEntity
public class Branch
{        
    @GraphId
    public Long id;

    public Branch(Root root, Leaf leaf)
    {
        this.root = root;
        this.leaf = leaf;
    }

    @Property
    public float length;

    @StartNode
    public Root root;

    @EndNode
    public Leaf leaf;
}

それでは、テストのためにやってみましょう

public class Main {

    public static void main(String[] args) {

        SessionFactory sessionFactory = new SessionFactory("com.my.package.name");
        Session session = sessionFactory.openSession();

        Root r = new Root()
        r.addLeaf(new Leaf(), 1);
        r.addLeaf(new Leaf(), 2);
        session.save(r);

        //Until this point everything is alright and
        // all 3 nodes and 2 relationships are created

        String query = "MATCH path = (l1:Leaf)-[*1..100]-(l2:Leaf) WITH path LIMIT 1 RETURN path";
        QueryResultModel qrm = session.query(query, new HashMap<String, Object>());
        // qrm.result.get(0).get("path")  is null
    }
}

何が間違っているのか説明してください。

4

1 に答える 1

1

フル パスを返すことはサポートされていません。代わりに、次のようなドメイン エンティティにマッピングするノードと関係を返す必要があります。

MATCH path = (l1:Leaf)-[*1..100]-(l2:Leaf) WITH path,l1 LIMIT 1 RETURN l1,nodes(path),rels(path)

これにより、org.neo4j.ogm.session.Resultオブジェクトが得られます。基礎となる Map から l1 を取得する場合、完全にハイドレートされた Leaf エンティティが必要です。

ところで何がわからないQueryResultModel- QueryResult は SDN でのみサポートされています。

于 2016-02-10T02:45:02.303 に答える