使用MongoDB的Spring数据存储库

时间:2018-07-25 13:49:40

标签: java mongodb spring-data

我将Spring Data Repository用于Mongo DB,Java 8和Mongo DB。 我有这样的DTO:

@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "cra")
public class CRAMongoDTO {

    private String cra;

    private String service;

    private Date timestamp;

    private String body;

    private List<ParameterDTO> parameters;

    private int hashCode;

}


@Data
@AllArgsConstructor
@NoArgsConstructor
@Document
public class RequestDTO {

    @NotBlank(message = "error.cra.notBlank")
    @Id
    private String cra;


    @NotBlank(message = "error.service.notBlank")
    private String service;


    @NotNull(message = "error.timestamp.notNull")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX")
    private Date timestamp;


    @NotEmpty(message = "error.parameters.notEmpty")
    private List<ParameterDTO> parameters;

    public String getParameterValueByName(String name) {
        if (parameters != null) {
            return parameters.stream()
                    .filter(e -> name.equals(e.getName()))
                    .findAny()
                    .map(ParameterDTO::getValue)
                    .orElse(null);
        } else {
            return null;
        }
    }
}

CRAMongoDTO-它是Mongo DB中“ cra”集合中Object的结构,RequestDTO-它是具有在Mongo中搜索CRAMongoDTO的信息的对象。

我有这样的存储库:

    public interface CRAMongoDTORepository extends MongoRepository<CRAMongoDTO, Long> {

    @Query("{ '$and' : [ { 'cra' : ?0}, { 'service' : ?1}, { 'timestamp': { $gt: ?2 } }, " +
            "{ 'hashCode':  ?3 } ] }" )
    CRAMongoDTO find(String cra, String service, Date timestamp, int hashCode, Sort sort);

}

以及ServiceImpl类中的此类方法:

@Override
    public ResponseDTO findCRA(RequestDTO requestDTO) {
        Sort sort = new Sort(Sort.Direction.DESC, "timestamp");
    CRAMongoDTO craMongoDTO = craMongoDTORepository.find(requestDTO.getCra(), requestDTO.getService(),
            requestDTO.getTimestamp(), requestDTO.getParameters().hashCode(), sort);
}

但是当我尝试调用 find 方法时,我得到的信息是,使用此类请求参数的MongoDB中没有结果(文档)。我已经检查了很多次,在MongoDB中,“ cra”集合中有此类文档。 我在做什么错了?

0 个答案:

没有答案