3

_MongoRepository中变量的正确方法名称是什么。

历史.java

@Document(collection = "spring-history")
public class History {
    private Long record_id;

    //getter - setter
}

HistoryRepository.java

public interface HistoryRepository extends MongoRepository<History, String>{
    List<History> findAllByRecordid(Long recordId);
}

我得到了以下异常

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property recordid found for type History! Did you mean 'record_id'?

我尝试了以下变量选项,但这些都不起作用。

List<History> findAllByRecordId(Long recordId);
List<History> findAllByRecord_id(Long recordId);
List<History> findAllByRecord__id(Long recordId);
4

3 回答 3

1

异常说有No property recordid found for type History!

发生这种情况是因为您编写的存储库方法findAllByRecordid当前正在寻找类中的recordid属性History

你所要做的就是History相应地改变你的班级;例如,您可以更改

private Long record_id;

private Long recordid;

但是,由于我认为这record_id是一个组合名称变量,您应该使用骆驼大小写约定并将其命名为recordId

按照骆驼案例约定,您还必须将存储库方法更改为 List<History> findByRecordId(Long recordId);

在这种情况下,您还必须使用注解对recordId进行@Field注解,以便将recordId属性映射到 MongoDB BSON 文档中的实际键。有关更多详细信息/信息,您可以查看映射注释概述

于 2017-10-30T13:04:22.820 回答
0

利用

@Field("record_id") 
private Long recordId;
于 2021-04-01T21:28:36.180 回答
0

改变你的变量声明

private Long record_id; 

private Long recordId;

并使用这个:

List<History> findByRecordId(Long recordId);
于 2017-10-30T12:54:00.193 回答