【问题标题】:same query in jpa and oracle client , different resultjpa 和 oracle 客户端中的相同查询,不同的结果
【发布时间】:2014-07-28 07:42:12
【问题描述】:

在 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

在 matematicasP 列中使用 jpa 的结果是 5,但在 sql 中的结果是 3。

有人遇到过这种问题吗?

谢谢!

【问题讨论】:

    标签: java sql oracle jpa


    【解决方案1】:

    这没有意义。你确定数据库的状态在你的领导下没有改变吗?在 SQL 中执行时正确答案是 3,而在 JPA 中执行时正确答案是 5,并且都是正确的吗?

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

    【讨论】:

    • 实际上,我使用管理员权限来查看我的 JPA 会话正在启动的查询。尽管如此,数据库状态或绑定变量没有变化。 :S
    【解决方案2】:

    要解决它.. 我不得不重置 Oracle DB。 之后,oracle 客户端(sql developer 和 sql plus)向我展示了我正在寻找的答案。 我不知道为什么这样做可以解决问题。

    【讨论】:

      猜你喜欢
      • 2021-03-15
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 2012-07-24
      • 2012-07-06
      相关资源
      最近更新 更多