繁体   English   中英

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

[英]same query in jpa and oracle client , different result

是否可能在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 DB。 之后,oracle客户端(sql开发人员和sql plus)向我显示了我正在寻找的答案。 我不知道为什么这样做可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM