Когда я запускаю это в sqldeveloper:
SELECT CASE
WHEN TABLE1.COL1 IS NOT NULL
THEN (
CASE
WHEN TABLE1.COL2 IS NOT NULL
THEN TABLE1.COL3
ELSE TABLE1.COL4
END)
WHEN TABLE1.COL5 IS NOT NULL
THEN TABLE1.COL6
ELSE TABLE1.COL7 END "C" FROM TABLE1
работает нормально.
Когда я запускаю это через сеанс Hibernate, он дает:
No Dialect mapping for JDBC type: -101
Все столбцы типа varchar2. col1 имеет номер типа.
База данных оракула 10г.
Обходной путь также приветствуется, если решение не очевидно :)
Кроме того, как я могу узнать, на что ссылается тип JDBC -101? Я видел -1, но не -101 раньше.
РЕДАКТИРОВАТЬ: я попытался использовать скаляр возврата в верхней части именованного запроса Не повезло.
РЕДАКТИРОВАТЬ # 2: Есть ли способ увидеть, что тип данных возвращается для «C». Затем я использую одно из решений, приведенных в ответе.