Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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
Java jpa和oracle客户端中的查询相同,结果不同_Java_Sql_Oracle_Jpa - Fatal编程技术网

Java jpa和oracle客户端中的查询相同,结果不同

Java jpa和oracle客户端中的查询相同,结果不同,java,sql,oracle,jpa,Java,Sql,Oracle,Jpa,在entityManager.createNativeQuery(JPA)和任何oracle客户端(SQL)中运行相同的查询是否会产生不同的结果 我正在使用以下查询执行此操作: SELECT FITE_INSTID, fite_grado, SUM(lenguajeP) as lenguajeP, SUM(lenguajeG) as lenguajeG, SUM(lenguajeX) as lenguajeX, SUM(matematicasP) as matematicas

在entityManager.createNativeQuery(JPA)和任何oracle客户端(SQL)中运行相同的查询是否会产生不同的结果

我正在使用以下查询执行此操作:

SELECT FITE_INSTID,
  fite_grado,
  SUM(lenguajeP) as lenguajeP,
  SUM(lenguajeG) as lenguajeG,
  SUM(lenguajeX) as lenguajeX,
  SUM(matematicasP) as matematicasP,
  SUM(matematicasG) as matematicasG,
  SUM(matematicasX) as matematicasX,
  SUM(cienciasP) as cienciasP,
  SUM(cienciasG) as cienciasG,
  SUM(cienciasX) as cienciasX,
  SUM(pensamientoP) as pensamientoP, 
  SUM(pensamientoG) as pensamientoG, 
  SUM(pensamientoX) as pensamientoX
  FROM
(SELECT f.FITE_INSTID,
  f.fite_anio,
  f.fite_grado,    
 (CASE WHEN f.FITE_TIPO_REPORTE_L IN ('08') THEN 1 ELSE 0 END) AS lenguajeP,
 (CASE WHEN f.FITE_TIPO_REPORTE_L IN ('05') THEN 1 ELSE 0 END) AS lenguajeG,
 (CASE WHEN f.FITE_TIPO_REPORTE_L NOT IN ('05','08') THEN 1 ELSE 0 END) AS lenguajeX,
 (CASE WHEN f.FITE_TIPO_REPORTE_M IN ('08') THEN 1 ELSE 0 END) AS matematicasP,
 (CASE WHEN f.FITE_TIPO_REPORTE_M IN ('05') THEN 1 ELSE 0 END) AS matematicasG,
 (CASE WHEN f.FITE_TIPO_REPORTE_L NOT IN ('05','08') THEN 1 ELSE 0 END) AS matematicasX,
 (CASE WHEN f.FITE_TIPO_REPORTE_C IN ('08') THEN 1 ELSE 0 END) AS cienciasP,
 (CASE WHEN f.FITE_TIPO_REPORTE_C IN ('05') THEN 1 ELSE 0 END) AS cienciasG,
 (CASE WHEN f.FITE_TIPO_REPORTE_L NOT IN ('05','08') THEN 1 ELSE 0 END) AS cienciasX,
 (CASE WHEN f.FITE_TIPO_REPORTE_D IN ('08') THEN 1 ELSE 0 END) AS pensamientoP,
 (CASE WHEN f.FITE_TIPO_REPORTE_D IN ('05') THEN 1 ELSE 0 END) AS pensamientoG,
 (CASE WHEN f.FITE_TIPO_REPORTE_L NOT IN ('05','08') THEN 1 ELSE 0 END) AS pensamientoX
FROM Fichatecnica f 
WHERE 
  f.FITE_ESTADO=1 and  f.fite_instid is not null and f.fite_anio in (?,?,?,?)  and f.fite_instid=?) GROUP BY FITE_INSTID,
  fite_grado
使用jpa,matematicasP列中的结果是5,但在sql中,结果是3

有人有过这样的问题吗


谢谢大家!

这没有道理。您确定在您的管理下数据库的状态没有改变吗?在SQL中执行时,正确答案可能是3,在JPA中执行时,正确答案可能是5,两者都是正确的吗


其次,您确定在每种情况下都传递相同的绑定变量值吗?

来解决这个问题。。我必须重置Oracle数据库。 之后,oracle客户端(sql developer和sql plus)向我展示了我想要的答案。
我不知道为什么这样做可以解决这个问题。

实际上,我使用管理员权限查看我的JPA会话启动的查询。但是,数据库状态或绑定变量没有变化:s