2011-11-07 78 views
1

作爲新的春天數據圖的Cypher查詢,這可能是很微不足道的......Cypher支架查詢來獲取節點與給定的屬性值

我找這將是Cypher支架查詢來獲取具有所有節點一些屬性的給定值。那麼,什麼是???在@Query註釋以下:

@Query(???) 
List<MyObject> findByProperty1AndProperty2(String property1, String property2) 

編輯: 所以,我設法通過加入暗號依賴(由邁克爾下面的建議)使用衍生查詢。但我似乎得到下面的錯誤:

string matching regex (?i)\Qreturn\E' expected but ,' found

我想這是因爲它似乎是創造一個像查詢:

​​

而不是

start n=node:__types__(className="com.example.MyObject") where n.property1 = {0} and n.property2 = {1} return n

(注意,而不是and在查詢中)

在此先感謝。

回答

4

請注意,全局查詢並不是Neo4j的甜蜜點,但是當您運行的Spring Data Neo4j稍有緩解時。 :)

實際上,您不需要此查詢的@Query註釋。

它構造了一個派生的查詢,無論如何看着你的屬性,如果一個索引它將使用該查詢作爲你的查詢的起點,否則它將從「__type__」索引中提取所有條目。

實際上,它會創建這樣一個查詢:如果您正在使用SDN的當前快照版本(這將在本週發佈的RC1

start n=node:__types__(className="com.example.MyObject") 
where n.property1 = {0} and n.property2 = {1} 
return n 

所以 你可以這樣做:

List<MyObject> findByProperty1AndProperty2(String property1, String property2) 

當然Cypher和小鬼是SDN可選依賴(b/C有些人不想拉斯卡拉/ Groovy的默認情況下)。你只需要對暗號maven的依賴關係添加到項目

<dependency> 
    <groupId>org.neo4j</groupId> 
    <artifactId>neo4j-cypher</artifactId> 
    <version>${neo4j.version}</version> 
</dependency> 
+0

感謝您的回覆,@Michael!但正如另一篇文章中提到的,當我使用派生查詢時,我收到一個錯誤 - 「Cypher不可用,請將其添加到您的依賴項中」。任何想法爲什麼? (我正在使用SDN 2.0.0.M1) – Saket

+0

添加依賴後我得到一個錯誤,如:'字符串匹配正則表達式'(?我)\ Qreturn \ E'預期,但','發現' – Saket

+0

我認爲原因是因爲它似乎創建瞭如下查詢:'start n = node:__ types __(className =「com.example.MyObject」)其中n.property1 = {0},n.property2 = {1}返回n'而不是' start n = node:__ types __(className =「com.example.MyObject」)其中n.property1 = {0}和n.property2 = {1}返回n'。在我的查詢中注意''''而不是'和' – Saket

相關問題