我有一个spring引导应用程序连接到本地mongoDB数据库。当我尝试从集合中获取所有记录时,它返回一个空的array.In,它说输出连接到端口27017。在运行应用程序时,它不会给我任何错误,但是当我输入http://localhost:8080/courses/时,只返回一个空数组,这里我遗漏了什么?
模型类
package SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Model;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
public class Courses {
@Id
public ObjectId _id;
public String courseID;
public String courseName;
public Courses(ObjectId _id, String courseID, String courseName) {
super();
this._id = _id;
this.courseID = courseID;
this.courseName = courseName;
}
public String get_id() {
return _id.toHexString();
}
public void set_id(ObjectId _id) {
this._id = _id;
}
public String getCourseID() {
return courseID;
}
public void setCourseID(String courseID) {
this.courseID = courseID;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
}控制器类
package SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Controller;
import java.util.List;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Model.Courses;
import SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Repository.CoursesRepository;
@RestController
@RequestMapping("/courses")
public class CourseController {
@Autowired
private CoursesRepository repository;
@RequestMapping(value = "/", method = RequestMethod.GET)
public List<Courses> getAllCourses() {
return repository.findAll();
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Courses getPetById(@PathVariable("id") ObjectId id) {
return repository.findBy_id(id);
}
}存储库类
package SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Repository;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.MongoRepository;
import SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Model.Courses;
public interface CoursesRepository extends MongoRepository<Courses, String> {
Courses findBy_id(ObjectId _id);
}MongoDb输出
db.Courses.find().pretty()
{
"_id" : ObjectId("5d29c3a58212eda90db024c4"),
"courseID" : "1",
"courseName" : "C#"
}
{
"_id" : ObjectId("5d29c3a58212eda90db024c5"),
"courseID" : "2",
"courseName" : "Java"
}
{
"_id" : ObjectId("5d29c3a58212eda90db024c6"),
"courseID" : "3",
"courseName" : "JavaScript"
}发布于 2019-07-13 20:22:12
之所以会出现这个问题,是因为您的模型类中没有显式地给出集合名称,所以spring-data将集合名从类名(Courses)派生为camel case (courses)。由于您的实际集合名为Courses,因此找不到结果。
你必须要么:
courses。或@Document(collection = "Courses")
public class Courses {发布于 2022-11-06 13:16:06
我也遇到过类似的问题,在回购MatchRepository extends MongoRepository<Match, Integer>中我的自定义方法。
我将标识符从Integer更改为String,它对我有效。比如:MatchRepository extends MongoRepository<Match, String>。
https://stackoverflow.com/questions/57022303
复制相似问题