Необычное «исключение неизвестного параметра» в JPA - PullRequest
0 голосов
/ 25 июня 2019

Я столкнулся с очень необычным исключением, связанным с объектом JPA Query с гибернацией, при работе с Spring Frame, я нахожу это странным по трем причинам

  1. Я уверен, что названный параметр существует и не подделан.
  2. Это работает в большинстве наших условий.
  3. Query.setParameter () не выдает исключение, а скорее из какого-то перехватчика из пружины.

У кого-нибудь есть идея?

SQL-сборка с параметром:

sql.append(" AND table2.entry_date >= :start_date AND table2.entry_date <= :end_date ");

Код, в котором задан параметр, и кажется, что он в порядке.

    Query query = entityManager.createNativeQuery(sql.toString(), "XXXXXXXXXXX")
            .unwrap(Query.class);

    query.setParameter("time_zone", filter.getTimeZone());
    query.setParameter("start_date", filter.getStartDate().toLocalDateTime(), TemporalType.TIMESTAMP);

Исключение:

org.springframework.dao.InvalidDataAccessApiUsageException: Unknown parameter name : start_date; nested exception is java.lang.IllegalArgumentException: Unknown parameter name : start_date
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:367)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:225)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
at com.redacted.redacted.redacted.redacted.redacted.redacted.redacted.RedactedRepositoryImpl$$EnhancerBySpringCGLIB$$53270333.retrieveReportSlice(<generated>)
...