Oracle CLOB和JPA/Hibernate ORDER BY?

Pet*_*rta 7 oracle hibernate jpa jpql ora-00932

我有一个JPQL查询,可以正常使用MySQL和SQL Server.但是随着Oracle的失败

ORA-00932: inconsistent datatypes: expected - got CLOB
Run Code Online (Sandbox Code Playgroud)

原因似乎是Oracle不支持带CLOB列的ORDER BY.

有没有JPQL解决这个问题?

Jos*_*shL 5

您需要将CLOB转换为Varchar才能进行排序。不幸的是,在Oracle中,Varchar列限制为4000个字符。如果按前4000个字符进行排序是合理的,那么下面是一个使用DBMS_LOB.SUBSTR的SQLPlus示例:

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.
Run Code Online (Sandbox Code Playgroud)