使用存储库时,Spring neo4j无法按值查找属性

时间:2013-04-14 13:56:34

标签: java spring neo4j

给出以下实体:

@NodeEntity  
public final class Foo  
{    
        @GraphId
    private Long id;
    @Indexed
    private String name;
}  

存储库:

public interface FooRepository extends GraphRepository<Foo> {}

服务:

@Service  
public class FooService  
{  
     @Autowired  FooRepository fooRepo;  
     public List<Foo> searchFor() {  
        EndResult<Foo> results = fooRepo.findAllByPropertyValue("name","*");  
                results.size();       //no results  
     }  

}  

我依赖于驻留在IndexRepository中的函数,因为我想利用Lucene查找。但是,上述查询无法返回任何内容。

2 个答案:

答案 0 :(得分:2)

我认为你不能在 findAllByPropertyValue 方法中使用通配符。也许使用 findAllByQuery 方法,你可以在哪里使用它们。您的查询可以简单如下:

name:*

答案 1 :(得分:0)

  

我同意应该这么简单。我试图强制它进入Lucene查找

如果我理解你想要什么,你能直接查询索引吗?

@Autowired 
Neo4jTemplate fooTemplate;
...
fooTemplate.getIndex(Foo.class).query("name:*");

这应该与添加

相同
@Query("start n=node:fooIndex(name=*)")
Set<Foo> getAllFoos();

FooRepository