Springboot数据 - 未找到属性注册

时间:2018-06-07 16:25:43

标签: java spring mongodb spring-boot spring-data-mongodb

我尝试使用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;
}

3 个答案:

答案 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)

@haticeSigirci带领我走正确的道路。

解决了
@Query("{registration_number: ?0}")
List<VehicleRegistration> getAllByRegistration_numberQuery(String registration_number);

more info here

基本上,像.findAll这样的内置查询是开箱即用的,但是自定义查询需要@query语句。