首页 > 解决方案 > 如何通过带有 nativeQuery 的 EclipseLink 调用带有日期参数的 Oracle 函数?

问题描述

我有一个下面的代码,我传递了四个参数,第二个是 Localdate。但它给了我无效的标识符异常,在 DB 端 ORA-00904

final EntityManager entityManager = factory.createEntityManager();

    final LocalDate applicationDate = LocalDate.of(consignmentRequest.getYear(), consignmentRequest.getMonth(), consignmentRequest.getDay());

    final String applicationDateParameter = applicationDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
    final String businessPartnerId = consignmentRequest.getBusinessPartnerId();
    final BigDecimal creditAmount = consignmentRequest.getCreditAmount();
    final Integer queryId = consignmentRequest.getEgmQueryId();


    final String FUNCTION_CALL_QUERY = "SELECT FN_VEHICLE_CONTROL(?1,?2,?3,?4) FROM DUAL";


    final BigDecimal value = (BigDecimal) entityManager
            .createNativeQuery(FUNCTION_CALL_QUERY)
            .setParameter(1, businessPartnerId)
            .setParameter(2, applicationDateParameter)
            .setParameter(3, creditAmount)
            .setParameter(4, queryId)
            .getSingleResult();

    entityManager.close();

下面还有我的 Oracle 函数签名,

CREATE OR REPLACE FUNCTION GLOBAL.FN_VEHICLE_CONTROL (
   seller      VARCHAR2,
   myDate       DATE,
   amount     NUMBER,
   queryId    NUMBER)
   RETURN NUMBER

如何将 Localdate 参数传递给查询?

标签: javajpaeclipselink

解决方案


推荐阅读