Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在jpa中编写本机查询_Jpa - Fatal编程技术网

如何在jpa中编写本机查询

如何在jpa中编写本机查询,jpa,Jpa,当我按下搜索按钮时,出现以下错误: 发生错误: 异常[EclipseLink-4002](Eclipse持久性服务)- 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.DatabaseException-Internal 异常:java.sql.SQLException:处缺少IN或OUT参数 索引::1错误代码:17041呼叫:从CRM_DAILY_工作表中选择*,其中 to_char(在'dd-MM-yy'上报告)=:在查

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

发生错误:

异常[EclipseLink-4002](Eclipse持久性服务)- 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.DatabaseException-Internal 异常:java.sql.SQLException:处缺少IN或OUT参数 索引::1错误代码:17041呼叫:从CRM_DAILY_工作表中选择*,其中 to_char(在'dd-MM-yy'上报告)=:在查询中报告: ReadAllQuery(referenceClass=CrmDailySheet sql=“选择*自 CRM_DAILY_SHEET to_char(报告日期:'dd-MM-yy')=:reportedOn)

代码:

public Listsearchres()引发异常{
SimpleDataFormat ddMMMyyFormat=新的SimpleDataFormat(“日/月/年”);
日期d1=searchsht.getReportedOn();
字符串日期到字符串=ddMMMyyFormat.format(d1);
返回crmsrvc.searchDailysht(日期字符串);
}
试一试{
Query Query=em.createNativeQuery(“从CRM\u日报表中选择*
WHERE to_char(于'dd-MM-yy')=:reportedOn,CrmDailySheet.class报告);
setParameter(“reportedOn”,reportedOn);
Listres=query.getResultList();
返回res;
}最后{
em.close();
}

有人能找到解决方案吗?

您正在尝试将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);

请看,至少您可以正确标记您的问题。如果您在mysql或sqlserver中运行查询,它运行正常吗?
Query query = em.createNativeQuery("SELECT * FROM CRM_DAILY_SHEET
    WHERE to_char (reported_on,'dd-MM-yy') = ?", CrmDailySheet.class);
query.setParameter(1, reportedOn);