首页 > 解决方案 > 尝试使用 TO_TIMESTAMP 函数运行本机查询时,Spring JPA 存储库抛出异常

问题描述

当我在 sqldeveloper 中运行以下更新查询时,它可以正常工作并更新表的指定列,但是,当我在 Spring Boot 中使用相同的查询时,它会引发异常。Java版本:jdk1.8.0_171 Spring版本:2.3.3.RELEASE Sql Developer版本:18.4.0.376

sqldeveloper 中使用的查询是:

Update ETL_EXTRACT_JOB_DETAILS set LAST_EXTRACT_DT = TO_TIMESTAMP('11-NOV-20 21:26:00.00','DD-MON-YY HH24:MI:SS.FF') where TENANT_ID = 'c1' and JOB_ID = '2011051116'

在扩展 JpaRepository 的存储库类中使用的查询是:

@Modifying
    @Query(value= "UPDATE ETL_EXTRACT_JOB_DETAILS SET LAST_EXTRACT_DT = TO_TIMESTAMP(?1,'DD-MON-YYYY HH24:MI:SS.FF') WHERE TENANT_ID = ?2 and JOB_ID = ?3", nativeQuery = true)
    int setLastExtractDateFor(String lastExtractDate, String TenantId, String jobId);

用于 setLastExtractDateFor 中的上述参数的值:lastExtractDat = "11-NOV-20 21:26:00.00", jobId = "2011051116", TenantId = "c1"

java抛出的异常是:

[org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:403), org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:257), org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528), org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61), org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242), org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153), org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186), org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:149), org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186), org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95), org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186), org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212), com.sun.proxy.$Proxy3937.setLastExtractDateFor(Unknown Source), oracle.apps.bi.etl.services.service.impl.EtlSchemaService.updateLastExtractDateFor(EtlSchemaService.java:366),

标签: javaspringspring-boothibernatespring-mvc

解决方案


推荐阅读