2012-11-24 183 views
0

我有一個共同的實體類:指標不返回預期的結果

@NodeEntity 
public class Entity { 
    /*** Common Fields ***/ 
    @GraphId 
    protected Long nodeId; 

    @Indexed(level = Indexed.Level.INSTANCE) 
    protected Long id; 

    @Indexed(level = Indexed.Level.INSTANCE) 
    protected String someProperty;   

    ... 
} 

僱員類擴展Entiy類:

public class Employee extends Entity { 

    @Indexed 
    private String someOtherProperty; 

    ... 
}  

我已經在我的測試發現:

@Autowired private GraphDatabaseService service; 
Node node1 = service.index().forNodes("Employee").get("id", 1l).getSingle(); 

不返回任何值,而

Node node2 = service.index().forNodes("Employee").get("someProperty", "someValue").getSingle();   
Node node3 = service.index().forNodes("Employee").get("someOtherProperty", "someOtherValue").getSingle();    

兩者均按預期返回。

我嘗試將「id」的名稱更改爲其他一些文字,並且都使用1(數字)和「1」(字符串)進行搜索,但它仍然是相同的情況。我懷疑它與數字值有關。

所以我不知道我是否在使用@Indexed以錯誤的方式?

使用: Neo4j的版本:1.8 彈簧數據neo4j.version:2.1.0.RC4

回答

0

數值字段默認爲數字值,其然後被存儲在不同的Lucene的索引,這意味着一個具有使用NumericRangeQuery,這是在Neo4jTemplate.lookup方法內部完成的。

如果您不想使用數字索引數據,請使用@Indexed(numeric=false)。然後它被索引爲一個字符串並通過密碼和字符串索引查找找到。