Spring Data Mongo DB Repository FindBy无法正常工作

时间:2015-10-22 15:15:13

标签: spring mongodb spring-data

我试图将自定义查询添加到MongoRepository实例,但它无法正常工作。 here中的第10.3节描述了我尝试做的事情。我尝试了4种不同的方式,但似乎没有任何效果......

我的代码

public interface MyRepository extends MongoRepository<StudentEO,CustomId>{

    //1st attempt. 
    //StudentEO findByFirstName(String firstName);

    //2nd attempt. 
    //@Query("{ 'firstName' : ?0 }")
    //StudentEO findByFirstName(String firstName);

    //3rd attempt.
    //List<StudentEO> findByFirstName(String firstName);

    //4th attempt
    @Query("{ 'firstName' : ?0 }")
    List<StudentEO> findByFirstName(String firstName);
}

@Document(collection = "data_point_metadata")
public class StudentEO {

    @Id
    private CustomId id;
    private String firstName;
    private String lastName;
    private StudentType studentType;

    ...

    getters and setters...
}

@Component
public class StringToStudentTypeConverter implements Converter<String, StudentType> {

    @Override 
    public StudentType convert(String source) { 
        if(source == null){
            return null;
        }

        try{
            return StudentType.valueOf(source.trim().toUpperCase());
        }catch(Exception e){
            LOGGER.error("invalid dataType value - "+e.getMessage());
        }
        return null;
    }
}

在日志中我看到:

c.f.f.s.w.m.u.StringToDataTypeConverter - invalid studentType value - No enum constant ...StudentType.John
o.s.data.mongodb.core.MongoTemplate - find using query: { "firstName" :  null } fields: null ... 

我什么也得不回来。当我调试它时,我的服务层肯定传递了一个有效的firstName。不是空的。

我还使用默认的findAll()存储库方法,它工作正常。

PageRequest pageRequest = new PageRequest(pageNumber, pageSize != 0 ? pageSize : defaultPageSize);
Page<StudentEO> studentsPage = myRepository.findAll(pageRequest);

我做错了什么?

我使用的是以下版本的spring apis:

  • spring-core 4.1.7.RELEASE
  • spring-data-commons 1.9.3.RELEASE
  • spring-data-mongodb 1.6.3.RELEASE

0 个答案:

没有答案