【问题标题】:how to write native query in jpa如何在 jpa 中编写本机查询
【发布时间】:2013-09-05 21:11:37
【问题描述】:

当我按下搜索按钮时出现以下错误:

发生错误:

异常 [EclipseLink-4002](Eclipse 持久性服务 - 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.DatabaseException 内部 异常:java.sql.SQLException:缺少 IN 或 OUT 参数 index:: 1 错误代码:17041 调用:SELECT * FROM CRM_DAILY_SHEET WHERE to_char(reported_on,'dd-MM-yy') = :reportedOn 查询: ReadAllQuery(referenceClass=CrmDailySheet sql="SELECT * FROM CRM_DAILY_SHEET WHERE to_char(reported_on,'dd-MM-yy') = :reportedOn")

代码:

public List < CrmDailySheet > searchres() throws Exception {
    SimpleDateFormat ddMMMyyFormat = new SimpleDateFormat("dd/MM/yy");
    Date d1 = searchsht.getReportedOn();
    String date_to_string = ddMMMyyFormat.format(d1);
    return crmsrvc.searchDailysht(date_to_string);
}

try {
    Query query = em.createNativeQuery("SELECT * FROM CRM_DAILY_SHEET  
 WHERE   to_char  (reported_on,'dd-MM-yy')    =      :reportedOn", CrmDailySheet.class);
    query.setParameter("reportedOn", reportedOn);
    List < CrmDailySheet > res = query.getResultList();
    return res;
} finally {
    em.close();
}

请问谁能找到解决办法?

【问题讨论】:

标签: jpa


【解决方案1】:

您正在尝试将 JPQL 参数语法(“:reportedOn”)与本机查询一起使用。尝试改用? 并按位置设置参数值,例如:

Query query = em.createNativeQuery("SELECT * FROM CRM_DAILY_SHEET
    WHERE to_char (reported_on,'dd-MM-yy') = ?", CrmDailySheet.class);
query.setParameter(1, reportedOn);

【讨论】:

    猜你喜欢
    • 2014-11-11
    • 1970-01-01
    • 2011-03-22
    • 2019-12-05
    • 2021-06-17
    • 2012-11-01
    • 2021-05-01
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多