我是春季启动的新手我试图使用spring boot创建一个简单的应用程序我得到错误:
org.springframework.beans.factory.UnsatisfiedDependencyException:错误 创建名称为&c; carsApplication':不满意的依赖关系 通过字段'carMongoRepository';
表达嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建错误 bean名称为' carMongoRepository':调用init方法 失败;嵌套异常是 org.springframework.data.mapping.model.MappingException:不能 查找域类java.lang.Object!
的映射元数据
这是我实施的Model类:
具有id,make和model的汽车的模型类,它包括get和set方法
package com.example.cars;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.stereotype.Component;
@Document(collection = "cars")
public class Car {
private String id;
private String make;
private String model;
public Car() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getMake() {
return make;
}
public void setMake(String make) {
this.make = make;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
}
这是我实施的主要类:
运行应用程序的Spring启动应用程序的主类
package com.example.cars;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class CarsApplication {
@Autowired
CarMongoRepository carMongoRepository;
public static void main(String[] args) {
SpringApplication.run(CarsApplication.class, args);
}
}
这是我实施的Controller类:
API调用的控制器类添加汽车值,如model和make.Include API调用,如下所示,具有POST方法实现。
package com.example.cars;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class CarController {
@Autowired
CarMongoRepository carMongoRepository;
@RequestMapping(value = "/addCar", method = RequestMethod.POST)
public void addCar(@ModelAttribute Car car) {
carMongoRepository.save(car);
}
}
这是我实施的存储库
为应用程序的CRUD存储库调用实现了接口 如下所示。此实现使用@Repository注释。 类名是CarMongoRepository,它扩展了CRUDRepository,如下所示。
package com.example.cars;
import org.springframework.data.repository.CrudRepository;
import com.example.cars.Car;
import org.springframework.stereotype.Repository;
@Repository
public interface CarMongoRepository extends CrudRepository {
}
我尝试运行spring boot主类时遇到上面提到的错误。所以,请帮我解决这个问题。
答案 0 :(得分:0)
CrudRepository需要通用参数来知道它应该处理哪个实体(或文档)。
让CarMongoRepository
延长CrudRepository<Car, String>
,它应该有用。
第一个参数指定存储库应处理的实体/文档的类型,第二个参数是此实体/文档的id的类型(我假设它是类型{{1的字段id
在你的Car类中)
如果您未指定任何参数,则会假定您的String
延长CarMongoRepository
,这就是错误消息告诉您的内容。
org.springframework.data.mapping.model.MappingException:无法查找域类java.lang.Object的映射元数据!
您的应用程序尝试查找未定义的CrudRepository<Object, Object>
类型的实体/文档的映射。
我对使用spring记录商店数据库不是很熟悉,但我认为你必须使用Object
在Car
类中注释你的id属性(至少那是{{1}的注释} class。也许@Id
类有不同的等价物。)