findBy查询方法没有在spring数据elasticsearch中进行woking

时间:2015-09-28 13:44:08

标签: java elasticsearch repository spring-data-elasticsearch

我使用Spring-data-elasticsearch插件从elasticsearch服务器检索信息。 下面是存储库类:

public interface ActorRepository extends ElasticsearchRepository<Actor, Integer> {
    public Actor findByActorId(Integer actorId);
    public Iterable<Actor> findByFirstName(String firstName);
    public Page<Actor> findByLastName(String lastName, Pageable pageable);
    //public Iterable<Actor> findByLastName(String lastName);
}

使用ActorRepository:

@Resource
ActorRepository actorRepository;
Actor actor1 = this.actorRepository.findOne(actorId); // Working perfectly
System.out.println("findOne Method :" + actor1);
Iterable<Actor> actors = this.actorRepository.findAll(); // Works perfectly
for(Actor actor : actors) {
    System.out.println("Each Actor :" + actor);
}

Actor actor214 = this.actorRepository.findByActorId(214); // Not working. Reurning null
System.out.println("findByActorId214 :" + actor214);    

我从上面的方法调用得到null响应。我不知道我在这里失踪了什么。

供参考:

我已指定哪个方法正常工作,哪个方法在方法调用旁边不起作为注释。

如果您需要更多信息,请与我们联系。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我注意到的问题是由于POJO与弹性搜索数据的映射不正确。我在POJO中使用嵌套对象。所以我应该使用@Field spring注释将嵌套字段类型指定为FieldType.Nested。在指定了所有这些映射后,它运行良好。