1

Ich lese und lerne Spring Boot Daten mit MongoDB. Ich habe etwa 10 Datensätze in der Datenbank in folgendem Format:Rest API mit Spring Data MongoDB - Repository Methode funktioniert nicht

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

Wenn ich die URL öffnen:

http://localhost:8090/items 

I eine erschöpfende Liste aller Einzelteile zu erhalten. Allerdings möchte ich die Methoden der MongoRepository so verwenden, wie findById, count usw. Wenn ich sie als solche:

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

Ich bekomme einen 404.

Mein Setup ist wie so:

@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 { 

} 

Was mache ich falsch? Muss ich die Methoden wie in MongoRepository definiert implementieren oder werden sie automatisch implementiert? Ich bin verloren und habe versucht, das so lange herauszufinden. Ich habe keine Methoden in meinem Controller, es ist leer.

+1

Haben Sie sich die Anforderungszuordnungen angesehen, die beim Starten der Anwendung angezeigt werden? Es zeigt Ihnen alle Zuordnungen, die automatisch von Spring Data REST erstellt werden. –

+1

Entschuldigen Sie die Tippfehler. Das sollte gesagt haben "das wird protokolliert, wenn Ihre Anwendung startet" –

+0

Danke Andy. Gibt es eine Funktion in Eclipse, die uns alle Zuordnungen anzeigen kann? Entschuldigung, da bin ich mir nicht sicher. – Karthik

Antwort

2

Sie müssen die findById-Methode deklarieren, damit sie exponiert wird.

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

Beachten Sie, dass Sie die Methoden nicht implementieren müssen. SpringBoot wird den Namen der Methode analysieren und die ordnungsgemäße Umsetzung

+0

es funktioniert. Die Zählmethode funktioniert jedoch nicht auf diese Weise. Liegt es daran, dass der Rückgabetyp lang statt lang ist? – Karthik

0

ich gleiches Problem hatte,

Nach dem Entfernen @Configuration,@ComponentScan alles hat gut funktioniert.

Verwandte Themen