Данные Springboot - Регистрация собственности не найдена - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь вернуть данные из базы данных Монго, используя данные Springboot и jdbc

, вот мой 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 Ошибка при создании компонента с именем «readService»: Неудовлетворенная зависимость, выраженная через поле 'vr';вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем vehicleRegistrationRepository: сбой вызова метода 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 голосов
/ 07 июня 2018

Вам нужно добавить @Entity к вашему классу регистрации транспортных средств

@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;
}

После этого оно должно работать.

0 голосов
/ 08 июня 2018

@ haticeSigirci ведет меня по правильному пути.

Решено с помощью

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

подробнее здесь

По сути, встроенные запросыкак .findAll работает "из коробки", однако для пользовательских требуется оператор @query.

0 голосов
/ 07 июня 2018
@Repository
public interface VehicleRegistrationRepository extends CrudRepository<vehicle_registration, String> {

    List<vehicle_registration> findAllByRegistrationNumber(String VehRegNo);

}

Вы можете найти, как вы можете написать запрос с пружинными данными jpa Документация Кроме того, вам нужно изменить имя класса VehicleRegistration и имя вашего поля также.

...