Spring DataでNeo4jを使い始めたばかりですが、グラフオブジェクトを復元してドメインオブジェクトに戻すことができません。私はその種のデータベースの経験がないということを言わなければなりません。
そのように、私はSpringDataリポジトリを使用しています。標準クエリの場合、リポジトリコードは自動生成されますが、いくつかのカスタムメソッドを定義したいので、ここで説明するようにカスタムリポジトリを作成しました。
たとえば、2つの特定のノード間の特定のエッジから特定のプロパティ値(この場合はcurrentValueプロパティ)を更新できるようにしたいと思います(searchByUserNameは、ユーザーを表すノードエンティティで以前に定義されたインデックスです)。カスタムリポジトリの実装でNeo4jテンプレートのクエリメソッドを次のように使用しています。
public class TwitterUserRepositoryImpl implements TwitterUserRepositoryCustom{
@Autowired
private Neo4jOperations neo4jTemplate;
public void updateRelationshipValueByUserName(
String userAUserName, String userBUserName, double value){
HashedMap params = new HashedMap();
params.put("userAUserName", userAUserName);
params.put("userBUserName", userBUserName);
params.put("value", value);
String query = "START x=node:searchByUserName(userName = {userAUserName}), " +
"y=node:searchByUserName(userName = {userBUserName})" +
" MATCH (x)-[r:FOLLOWS]->(y)" +
" SET r.currentValue = {value}" +
" RETURN r";
Result<Map<String, Object>> relationships = neo4jTemplate.query(query, params);
/* let's try to recover the relationship entity and do some more stuff */
}
cypherクエリは、2人のユーザー間の「エッジ」を返します。その関係タイプは「FOLLOWS」で、Twitterユーザーネットワークをシミュレートします。このQueryResultオブジェクトをRelationshipEntityオブジェクトに戻す方法がわかりません。それは可能ですか?