1

我正在閱讀和學習MongoDB的Spring Boot數據。我在我的數據庫中約10個記錄的格式如下:Spring數據的其他API MongoDB - 存儲庫方法不起作用

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

當我打開網址:

http://localhost:8090/items 

我得到的所有項目的詳盡清單。不過,我想使用的MongoRepositoryfindByIdcount等。當我把它們作爲這樣的方法:

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定義的方法,還是會自動實施?我迷路了,一直試圖弄清楚這麼久。我的控制器中沒有任何方法,它是空的。

+1

您是否查看了應用程序啓動時查看的請求映射?它會顯示所有由Spring Data REST自動創建的映射。 –

+1

對不起。這應該說「當你的應用程序啓動時記錄」 –

+0

謝謝安迪。 Eclipse中是否有一個功能可以告訴我們所有的映射?對不起,我對此不確定。它的工作原理是 – Karthik

回答

2

您必須聲明findById方法才能使其公開。

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

請注意,您不需要實施這些方法。 SpringBoot將分析方法名稱,並提供正確的執行

+0

。但是,計數方法不能以這種方式工作。是因爲返回類型長而不是Long? – Karthik

0

我有同樣的問題,

去除@Configuration,@ComponentScan一切正常後。

相關問題