JPA-запрос: java .lang.IllegalArgumentException: предоставлено не менее 1 параметра, но в запросе присутствует только 0 параметров - PullRequest
0 голосов
/ 07 апреля 2020

Исключение выдается, когда я хочу запросить самую младшую (по дате) запись по userId с userId не пустым. Этот метод написан правильно или есть какая-то ошибка?

У меня есть следующие компоненты:

Репозиторий

public interface CustomEventStorage extends JpaRepository<CustomEventData, CustomEventDataId> {
    CustomEventData findFirstByUserIdNotNullOrderByIdDateDesc(@Param("userId") String userId);
}

Сущность

@Entity
@Table(name = "event")
public class CustomEventData {

    @EmbeddedId
    private CustomEventDataId id;

    @Column(name = "state")
    @Enumerated(EnumType.STRING)
    private EventState state;
    @Column(name = "user_id")
    private String userId;

Идентификатор Embedabble

@Embeddable
public class CustomEventDataId implements Serializable {

    @Column(name = "event_id")
    private String eventId;
    @Column(name = "date")
    private LocalDateTime date;

Исключение

Вызывается: java .lang.IllegalArgumentException: предоставлено не менее 1 параметра, но в запросе присутствует только 0 параметров , в org.springframework.util.Assert.isTrue (Assert. java: 136) ~ [spring-core-5.1.7.RELEASE.jar: 5.1.7.RELEASE] в org.springframework.data.jpa.repository. query.QueryParameterSetterFactory $ CriteriaQueryParameterSetterFactory.create (QueryParameterSetterFactory. java: 291) ~ [spring-data-jpa-2.1.8.RELEASE.jar: 2.1.8. .ParameterBinderFactory.lambda $ createQueryParameterSetter $ 1 (ParameterBinderFactory. java: 139) ~ [spring-data-jpa-2.1.8.RELEASE.jar: 2.1.8.RELEASE] в java .util.stream.ReferencePipeline $ 3 $ 1 .accept (ReferencePipeline. java: 193) ~ [na: 1.8.0_242] в java .util.Spliterators $ ArraySpliterator.tryAdvance (Spliterators. java: 958) ~ [na: 1.8.0_242] в java .util.stream.ReferencePipeline.forEachWithCancel (ReferencePipeline. java: 126) ~ [na: 1.8.0_242] в java .util.stream.AbstractPipeline.copyIntoWithCancel (AbstractPipeline. java: 499) ~ [ na: 1.8.0_242] at java .util.stream.AbstractPipeline.copyInto (AbstractPipeline. java: 486) ~ [na: 1.8. 0_242] в java .util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline. java: 472) ~ [na: 1.8.0_242] в java .util.stream.FindOps $ FindOp.evaluateSequential (FindOps. java: 152) ~ [na: 1.8.0_242] в java .util.stream.AbstractPipeline.evaluate (AbstractPipeline. java: 234) ~ [na: 1.8.0_242] в java .util.stream. ReferencePipeline.findFirst (ReferencePipeline. java: 531) ~ [na: 1.8.0_242] at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryParameterSetter (ParameterBinderFactory. java: 141) ~ -jpa-2.1.8.RELEASE.jar: 2.1.8.RELEASE] at org.springframework.data.jpa.repository.query.ParameterBinderFactory.lambda $ createSetters $ 0 (ParameterBinderFactory. java: 131) ~ [spring-data -jpa-2.1.8.RELEASE.jar: 2.1.8.RELEASE] в java .util.stream.ReferencePipeline $ 3 $ 1.accept (ReferencePipeline. java: 193) ~ [na: 1.8.0_242] в java .util.ArrayList $ ArrayListSpliterator.forEachRemaining (ArrayList. java: 1382) ~ [na: 1.8.0_242] в java .util.stream.AbstractPipeline.copyInto (AbstractPipeline. java: 482) ~ [na: 1.8.0_242] в java .util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline. java: 472) ~ [na: 1.8.0_242] в java .util.stream.ReduceOps $ ReduceOp.evaluateSequential (ReduceOps. java: 708) ~ [na: 1.8.0_242] в java .util.stream.AbstractPipeline.evaluate (AbstractPipeline. java: 234) ~ [ na: 1.8.0_242] в java .util.stream.ReferencePipeline.collect (ReferencePipeline. java: 566) ~ [na: 1.8.0_242] в org.springframework.data.jpa.repository.query.ParameterBinderFactory. createSetters (ParameterBinderFactory. java: 132) ~ [spring-data-jpa-2.1.8.RELEASE.jar: 2.1.8.RELEASE] в org.springframework.data.jpa.repository.query.ParameterBinderFactory.createSetters (ParameterBinderFactory . java: 124) ~ [spring-data-jpa-2.1.8.RELEASE.jar: 2.1.8.RELEASE] в org.springframework.data.jpa.repository.query.ParameterBinderFactory.createCriteriaBinder (ParameterBinderFactory. java: 75) ~ [spring-data-jpa-2.1.8.RELEASE.jar: 2.1.8.RELEASE] по адресу org.springframework.data.jpa.repository.quer y.PartTreeJpaQuery $ QueryPreparer.getBinder (PartTreeJpaQuery. java: 250) ~ [spring-data-jpa-2.1.8.RELEASE.jar: 2.1.8.RELEASE] в org.springframework.data.jpa.repository.query . .PartTreeJpaQuery $ QueryPreparer (. PartTreeJpaQuery java: 149) ~ [spring-data-jpa-2.1.8.RELEASE.jar: 2.1.8.RELEASE] в org.springframework.data.jpa.repository.query.PartTreeJpaQuery $ CountQueryPreparer. (PartTreeJpaQuery. java: 270) ~ [ spring-data-jpa-2.1.8.RELEASE.jar: 2.1.8.RELEASE] at org.springframework.data.jpa.repository.query.PartTreeJpaQuery. (PartTreeJpaQuery. java: 79) ~ [spring-data- jpa-2.1.8.RELEASE.jar: 2.1.8.RELEASE] ... пропущено 70 общих кадров

1 Ответ

0 голосов
/ 07 апреля 2020

JPA не ожидал userId в запросе, потому что вы используете UserIdNotNull, что означает user_id IS NOT NULL в запросе, который не ожидает userId. Используйте этот способ userId

CustomEventData findFirstByUserIdOrderByIdDateDesc(@Param("userId") String userId);

Вам не нужно проверять не null, потому что вы передаете userId.

...