2012-11-24 148 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)。然后它被索引为一个字符串并通过密码和字符串索引查找找到。