我尝试使用springboot数据和jdbc从mongo数据库返回数据
这是我的POM.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
</dependency>
我遇到的问题是我只能在我的存储库上执行.findAll()。当我尝试使用我的自定义方法
时.getAllByRegistration_numberIs(VehRegId);
我收到错误,
java.lang.IllegalStateException:无法加载ApplicationContext 创建名称&#39; readService&#39;:通过字段&#39; vr&#39;表达的不满意依赖项时出错;嵌套异常是org.springframework.beans.factory.BeanCreationException:使用名称&#39; vehicleRegistrationRepository创建bean时出错&#39;:init方法的调用失败;嵌套异常是org.springframework.data.mapping.PropertyReferenceException:找不到属性注册类型为vehicle_registration!
我的服务
@Component
public class ReadService {
@Autowired
VehicleRegistrationRepository vr;
public List<vehicle_registration> getReg(String VehRegId) {
//This works
//return (List<vehicle_registration>) vr.findAll();
//This doesn't work
return (List<vehicle_registration>) vr.getAllByRegistration_numberIs(VehRegId);
}
}
我的存储库
@Repository
public interface VehicleRegistrationRepository extends CrudRepository<vehicle_registration, String> {
vehicle_registration getAllByRegistration_numberIs(String VehRegNo);
}
我的对象
@Getter
@Setter
@ToString
public class vehicle_registration {
/*
This class must have the same name as the collection in mongodb
*/
@Id
String _id;
Integer OwnID;
Integer mileage_of_lasttransfer;
Date date_of_registration;
Date date_of_last_transfer;
String registration_number;
String UUID;
String personUUID;
String vehicleUUID;
Date time_stamp;
}
答案 0 :(得分:1)
@Repository
public interface VehicleRegistrationRepository extends CrudRepository<vehicle_registration, String> {
List<vehicle_registration> findAllByRegistrationNumber(String VehRegNo);
}
您可以找到如何使用spring data jpa documentation编写查询。此外,您还需要更改您的类名VehicleRegistration以及您的字段名称。
答案 1 :(得分:0)
您需要将@Entity添加到您的vehicle_registration类
@Entity
@Getter
@Setter
@ToString
public class vehicle_registration {
/*
This class must have the same name as the collection in mongodb
*/
@Id
String _id;
Integer OwnID;
Integer mileage_of_lasttransfer;
Date date_of_registration;
Date date_of_last_transfer;
String registration_number;
String UUID;
String personUUID;
String vehicleUUID;
Date time_stamp;
}
之后它应该可以工作。
答案 2 :(得分:0)
用
解决了@Query("{registration_number: ?0}")
List<VehicleRegistration> getAllByRegistration_numberQuery(String registration_number);
基本上,像.findAll
这样的内置查询是开箱即用的,但是自定义查询需要@query语句。