と一緒OrientDB 2.2.0を使用してい
使用グレムリンのパイプラインから頂点を入力するための手順: 市 - --LOCATED_IN --->国。
都市と国は両方ともcom.tinkerpop.frames.VertexFrameを実装しています。
私は、私は非常に簡単にこのように、たとえば、特定の国のために照会し、入力された反復処理可能を取り戻すことができFramedGraph作成する場合:これは完璧に動作
Iterable<Country> countries = framedGraph.getVertices("countryCode", "NL", Country.class);
を。
今、私は同じタイプのものを実現したいと思っていましたが、Gremlinを使ってより複雑なクエリを行うことができました。簡単なテストのように、私はGremlinを使って前の声明で取り上げた国の都市を得ることができるかどうかを試してみたかったのです。私はしかし、達成したい何
Nijmegen
Nieuw-Vennep
Niewegein
Sittard
Sittard
Noordwijk
Lisse
は、市がFramedGraphと同じように(代わりに頂点オブジェクトのパイプラインからオブジェクトを取り戻すことです。
Vertex nl = countries.iterator().next().asVertex();
GremlinPipeline<Vertex, Vertex> pipe = new GremlinPipeline<>();
pipe.start(nl).inE("LOCATED_IN").outV();
for (Vertex v : pipe) {
System.out.println(v.getProperty("name").toString());
}
は今、これは私が次のように出力を取り戻す、作品クエリ)。
Vertex nl = countries.iterator().next().asVertex();
GremlinPipeline<Vertex, Vertex> pipe = new GremlinPipeline<>();
pipe.start(nl).inE("LOCATED_IN").outV();
for (Vertex v : pipe) {
System.out.println(v);
}
私は戻って取得::
v(City)[#38:3]
v(City)[#40:3]
v(City)[#37:3]
v(City)[#36:3]
v(City)[#33:4]
v(City)[#35:3]
v(City)[#39:3]
だから私は戻って取得していた頂点の
は、私がこれに少しのコードを変更した場合ので、パイプラインは、正しい型を返すようですCityを入力します。 しかし、私はこれを行うにしようとした場合:
Vertex nl = countries.iterator().next().asVertex();
GremlinPipeline<Vertex, City> pipe = new GremlinPipeline<>();
pipe.start(nl).inE("LOCATED_IN").outV();
for (City v : pipe) {
System.out.println(v);
}
を私が手:
java.lang.ClassCastException: com.tinkerpop.blueprints.impls.orient.OrientVertex cannot be cast to models.City
また、私はこのしようとした場合:
Vertex nl = countries.iterator().next().asVertex();
GremlinPipeline<Vertex, City> pipe = new GremlinPipeline<>();
pipe.start(nl).inE("LOCATED_IN").outV().cast(City.class);
for (City v : pipe) {
System.out.println(v);
}
を私は同じクラスのキャスト例外を取得します。
私は明らかに何か間違っていますが、私は何を理解できません。どのポインタも大歓迎です!事前に
おかげで、[OK]をJonck