2012-06-22 36 views
3

當在java.util.Date屬性上查詢關係時,應該使用什麼語法?我嘗試了使用類似的查詢(這只是爲了顯示我想要做的,所以請不要注意變量名有一個例子):與Spring Data比較日期neo4j

@Query("start n1=node({0}) match n1-[r:TYPE]->n2 where r.dateCreated>={1} return r") 
Page<Relationship> findAll(Node node, long date, Pageable pager); 

但它引發以下錯誤:

Caused by: Don't know how to compare that. Left: 1339845862883; Right: 1339827156836 
at org.neo4j.cypher.internal.Comparer$class.compareValuesOfDifferentTypes(Comparer.scala:45) 
at org.neo4j.cypher.internal.Comparer$class.compare(Comparer.scala:67) 
at org.neo4j.cypher.commands.ComparablePredicate.compare(ComparablePredicate.scala:30) 
at org.neo4j.cypher.commands.ComparablePredicate.isMatch(ComparablePredicate.scala:41) 
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher$$anonfun$isMatchSoFar$1.apply(PatternMatcher.scala:148) 
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher$$anonfun$isMatchSoFar$1.apply(PatternMatcher.scala:148) 

我也嘗試通過傳遞日期,但它只是拋出相同的錯誤,但試圖比較長和日期。

我使用的彈簧數據Neo4j的版本2.0.1.RELEASE

回答

2

所以日期屬性的長期價值被存儲爲圖(在SDN的新版本,你可以定義一個@GraphProperty一個字符串(TARGETTYPE =在日期字段long.class)。

所以,如果你在參數值傳遞爲String.valueOf(longValue)

+0

是的,我來到了同樣的想法改變爲一個字符串,而不是一個長的比較將工作,爲什麼選擇存儲它作爲一個字符串,而不是一個很長的? – Guillaume

+0

,並且,如果它作爲一個字符串存儲它,傳遞一個參數作爲日期應自動將其轉換爲字符串以避免引發錯誤,不應該嗎? – Guillaume

+0

對,沒錯。但是,由於我們不知道(在SDN中)您在自定義查詢中編寫的內容,因此很難進行任何轉換。儘管如此,派生的查找器方法卻不同。 –