hibernate 架构分页查询时经常产生类似这样的sql语句:
SELECT *
FROM
(
SELECT 0 scrnfail_rate, '9' zz, 7 hh FROM DUAL
UNION ALL
SELECT 0 scrnfail_rate, '9' zz, 7 hh FROM DUAL
)
WHERE zz IS NOT NULL
AND TO_CHAR (hh) NOT IN
(
SELECT
DECODE
(
scrnfail_rate, 0, -1,
ROUND (LEVEL * 1 / (scrnfail_rate / 100))
-
ROUND (1 / (2 * (scrnfail_rate / 100)))
) AS nno
FROM DUAL
WHERE NVL (scrnfail_rate, 0) > 0
CONNECT BY LEVEL <= ROUND(9 * scrnfail_rate / 100)
)
这种语句在Oracle 11g EE 11.2.0.1.0版本上,运行时除了orderby对应的字段和主键能够正确返回之外,其他应返回字段均为空值。
修正的方法是修改oracle的初始化参数,将optimizer_features_enable参数值设置为
'11.1.0.7'
不要引号