Oracle CLOB и JPA / Hibernate ЗАКАЗАТЬ? - PullRequest
7 голосов
/ 13 сентября 2010

У меня есть запрос JPQL, который отлично работает с MySQL и SQL Server.Но с Oracle это не удается с

ORA-00932: inconsistent datatypes: expected - got CLOB

Причина, по-видимому, заключается в том, что Oracle не поддерживает ORDER BY со столбцами CLOB.

Есть ли способ решения этой проблемы в JPQL?

1 Ответ

4 голосов
/ 29 мая 2012

Вам нужно преобразовать CLOB в Varchar, чтобы выполнить сортировку. К сожалению, столбцы Varchar ограничены 4000 символов в Oracle. Если разумна сортировка по первым 4000 символам, вот пример SQLPlus с использованием DBMS_LOB.SUBSTR:

SQL> create table mytable (testid int, sometext clob);

Table created.

SQL> insert into mytable values (1, rpad('z',4000,'z'));

1 row created.

SQL> update mytable set sometext = sometext || sometext || sometext;

1 row updated.

SQL> select length(sometext) from mytable;

LENGTH(SOMETEXT)
----------------
           12000

SQL> select testid from mytable
  2  order by dbms_lob.substr(sometext, 0, 4000);

    TESTID
----------
         1

SQL> drop table mytable;

Table dropped.
...