JPA @Query java.lang.IllegalArgumentException: - PullRequest
0 голосов
/ 24 ноября 2018

Возникла проблема с этим кодом

public interface CharityRepository extends CrudRepository<Charity,Long> {

  @Query("select sum(sponsorSum) from Charity")
  Integer totalCharitySum();
}

Исключение выброса

org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании компонента с именем 'adminController', определенным в файле [D: \ IdeaProjects \ maraphonskills (3) \ target \ classes \ com \ maraphon \ maraphonskills \ controllers \ AdminController.class]: неудовлетворенная зависимость, выраженная через параметр конструктора 0;Вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем 'charityServiceImpl', определенным в файле [D: \ IdeaProjects \ maraphonskills (3) \ target \ classes \ com \ maraphon \ maraphonskills \ service \ CharitySlasscmpl.mpl]: Неудовлетворенная зависимость выражается через параметр конструктора 0;вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'charityRepository': сбой вызова метода init;вложенное исключение - java.lang.IllegalArgumentException: проверка не удалась для запроса для метода public abstract java.lang.Short com.maraphon.maraphonskills.repository.CharityRepository.totalCharitySum ()!

Вызвано: org.springframework.be.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем 'charityServiceImpl', определенным в файле [D: \ IdeaProjects \ maraphonskills (3) \ target \ classes \ com \ maraphon \ maraphonskills \ service \ CharityServiceImpl.class]: выраженная неудовлетворенная зависимость через конструктор0;вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'charityRepository': сбой вызова метода init;вложенным исключением является java.lang.IllegalArgumentException: проверка не удалась для запроса для метода public abstract java.lang.Short com.maraphon.maraphonskills.repository.CharityRepository.totalCharitySum ()!

Вызвано: org.springframework.be.factory.BeanCreationException: Ошибка создания бина с именем 'charityRepository': сбой вызова метода init;вложенное исключение - java.lang.IllegalArgumentException: проверка не удалась для запроса для метода public abstract java.lang.Short com.maraphon.maraphonskills.repository.CharityRepository.totalCharitySum ()!

Причина: java.lang.IllegalArgument: Проверка не удалась для запроса для метода public abstract java.lang.Short com.maraphon.maraphonskills.repository.CharityRepository.totalCharitySum ()!

Причина: java.lang.NullPointerException: null

Но этот код работает нормально

public interface CharityRepository extends CrudRepository<Charity,Long> {
  @Query("select sum(sponsorTarget) from Registration")
  Short totalSum();
}

@ Модификация не помогает. В чем может быть проблема?

Благотворительный код

 @Entity
@EqualsAndHashCode(exclude = "registrations")
@Data
public class Charity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    @Lob
    private String description;
    private String fileName;
    private Short SponsorSum;

    @OneToMany(mappedBy = "charity")
    public Set<Registration> registrations = new HashSet<>();
    }

Регистрационный код

    @Entity
@EqualsAndHashCode(exclude = "sponsorShips")
@Data
public class Registration {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    public Runner runner;
    private String registrationDateTime;
    @ManyToOne
    public Charity charity;
    @ManyToOne
    public RaceKitOption raceKitOption;
    @ManyToOne
    public RegistrationStatus registrationStatus;

    private Short sponsorTarget;
    @OneToMany(mappedBy = "registration")
    public Set<SponsorShip> sponsorShips = new HashSet<>();
   // public RegistrationEvent registrationEvent;
}

1 Ответ

0 голосов
/ 25 ноября 2018

Советы: Java чувствительна к регистру.

Проблема заключается в использовании строчного спонсора в вашем интерфейсе CharityRepository :

@Query("select sum(sponsorSum) from Charity")

И заглавная буква в вашем Благотворительном классе:

private Short SponsorSum;

Используйте один и тот же регистр в обоих случаях, и это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...