【发布时间】:2017-01-16 11:53:26
【问题描述】:
我有一个查询,应该根据传递的参数对结果进行排序:
@Query("""MATCH (u:User {userId:{uid}})-[:KNOWS]-(:User)-[h:HAS_STUFF]->(s:Stuff)
WITH s, count(h) as count ORDER BY count {order}
RETURN o, count SKIP {skip} LIMIT {limit}""")
fun findFromOthersByUserIdAndSortByAmountOfStuff(
@Param("uid") userId: String,
@Param("skip") skip: Int,
@Param("limit") limit: Int,
@Param("order) order: String): List<StuffWithCountResult>
对于order 参数,我使用以下enum 及其唯一方法:
enum class SortOrder {
ASC,
DESC;
fun toNeo4JSortOrder(): String {
when(this) {
ASC -> return ""
DESC -> return "DESC"
}
}
}
看来SDN没有正确处理{order}参数?在执行时,我得到一个异常提示
Caused by: org.neo4j.kernel.impl.query.QueryExecutionKernelException: Invalid input 'R': expected whitespace, comment or a relationship pattern (line 3, column 5 (offset: 244))
" RETURN o, count SKIP {skip} LIMIT {limit}"
^
如果我从 Cypher 语句中删除参数或将其替换为硬编码的 DESC,则该方法成功。我相信这不是因为enum,因为我在其他存储库方法中使用(其他)枚举并且所有这些方法都成功了。我已经尝试了不同的参数命名,例如sortOrder,但这没有帮助。
我在这里错过了什么?
【问题讨论】:
标签: spring-data cypher kotlin spring-data-neo4j-4