Spring Data Neo4j从存储库执行错误的查询

时间:2015-07-04 20:21:51

标签: neo4j cypher spring-data spring-data-neo4j

作为标题,Spring Data Neo4j不会执行正确的派生查询。让我用一个例子来澄清这个概念。我有以下课程

@RelationshipEntity
public class MashupToMashupSimilarity {

    private float score;
    //GETTER AND SETTER
}

并访问类的对象我使用简单的存储库类

public interface MashupToMashupSimilarityRepository extends
    GraphRepository<MashupToMashupSimilarity> {

     public Set<MashupToMashupSimilarity> findByScoreGreaterThan(float score);
}

当我执行上述方法时,记录器显示以下查询

DEBUG [CypherQueryEngine] - Executing cypher query: START `mashupToMashupSimilarity`=node:__types__(className="package.MashupToMashupSimilarity") WHERE `mashupToMashupSimilarity`.`score`! > {0} RETURN `mashupToMashupSimilarity` params {0=0.1}

请注意,它使用node:__types__作为索引,而应使用rel:__rel_types__;所以,它总是返回一个空的结果集。 OTH,如果我执行查询用正确的索引替换错误的索引,则返回正确的结果。

奇怪的是,调用MashupToMashupSimilarityRepository#findAll()(或#count()或从上述存储库继承的其他继承方法)结果集非空。但是,我不知道哪种查询已被执行,因为ATM我还没有找到记录查询的方法。

这是一个错误还是我遗漏了什么?我使用以下版本而且我无法升级它们

<spring.version>3.1.2.RELEASE</spring.version>
<spring-data-neo4j.version>2.1.0.RELEASE</spring-data-neo4j.version>
<neo4j.version>1.9.M02</neo4j.version>

0 个答案:

没有答案