我正在使用Spring Data for Neo4j來訪問Neo4j圖。我有一個UserRepository
與下面的註解查詢:如何將org.neo4j.rest.graphdb.entity.RestNode轉換爲Spring Data Neo4j節點實體
package com.abc.graph.repository;
import java.util.List;
import java.util.Map;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.GraphRepository;
import org.springframework.data.neo4j.repository.NamedIndexRepository;
import org.springframework.data.neo4j.repository.RelationshipOperationsRepository;
import com.abc.graph.entity.User;
public interface UserRepository extends GraphRepository<User>, NamedIndexRepository<User>,
RelationshipOperationsRepository<User> {
public User findById(String id);
public Page<User> findByNameLike(String name, Pageable page);
@Query("START user=node:User(id={0}) " +
"MATCH user-[:VISITS]->(location)<-[:VISITS]-(similar_user) " +
"RETURN similar_user, collect(location) as locations, count(*) as count " +
"ORDER BY count desc ")
public List<Map<String, Object>> findSimilarUsersByPlaceVisited(String userId);
}
我想從圖形檢索是誰到過類似的地方,併爲每個用戶的用戶,有什麼共同的地方,他們的名單曾經去過。該方法將返回一個Map<String, Object>
的列表。每張地圖將包含像similar_user
,locations
和count
這樣的密鑰。
從調試聲明中我可以看到similar_user
是org.neo4j.rest.graphdb.entity.RestNode
的一個實例。有什麼辦法可以將它轉換成我的Spring Data節點實體:com.abc.graph.entity.User
?
謝謝! '@ MapResult'註釋起作用。然而,我調用'getLocations()'方法時得到這個異常:'org.springframework.data.neo4j.conversion.QueryResultBuilder $ 1不能轉換爲java.util.Collection'任何想法? – Stanley 2013-03-19 08:26:57
嗯好點,你可以使用'@ResultColumn(「位置」)可迭代 getLocations();' –
2013-03-20 07:55:21
當我試圖調用'Iterator'的next()方法時遇到了另一個異常:''java.lang .RuntimeException:無法從Iterable中提取多個元素的單個值。' – Stanley 2013-03-20 08:26:38