1

我正在使用 MongoDB 阅读和学习 Spring Boot 数据。我的数据库中有大约 10 条记录,格式如下:

{
    "_id" : ObjectId("5910c7fed6df5322243c36cd"),
    name: "car"
}

当我打开网址时:

http://localhost:8090/items

我得到了所有项目的详尽清单。但是,我想使用MongoRepository诸如findById等的方法count。当我这样使用它们时:

http://localhost:8090/items/count
http://localhost:8090/items/findById/5910c7fed6df5322243c36cd
http://localhost:8090/items/findById?id=5910c7fed6df5322243c36cd

我得到一个404。

我的设置是这样的:

@SpringBootApplication
public class Application {
    public static void main(String[] args) throws IOException {
        SpringApplication.run(Application.class, args);
    }
}

@Document
public class Item implements Serializable {
    private static final long serialVersionUID = -4343106526681673638L;

    @Id
    private String id;
    private String name;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

@RepositoryRestResource(collectionResourceRel = "item", path = "items")
public interface ItemRepository<T, ID extends Serializable> extends MongoRepository<Item, String>, ItemRepositoryCustom {

}

我究竟做错了什么?我需要实现由定义的方法MongoRepository还是会自动实现?我迷路了,长期以来一直试图弄清楚这一点。我的控制器中没有任何方法,它是空的。

4

2 回答 2

3

You have to declare the findById method in order for it to be exposed.

Item findById(String id);
Item findByName(String name);

Note that you don't need to implement the methods. SpringBoot will analyse the method name and provide the proper implementation

于 2017-09-02T10:16:36.577 回答
0

我有同样的问题,

删除后@Configuration,@ComponentScan一切正常。

于 2018-03-05T10:11:39.190 回答