java - 无法将 clob 数据类型从数据库获取到 JPA 实体中

标签 java oracle hibernate clob ora-00932

我能够保存 (spring-hibernate saveorupdate()) 字段

 @Lob
 @Column(name = "FILENAME")
 private String filename;

进入oracle数据库的数据类型是clob

但是当我尝试检索它时,出现错误

ERROR - JDBCExceptionReporter.logExceptions(72) | ORA-00932: inconsistent datatypes: expected - got CLOB

下面是我如何从数据库中检索

DetachedCriteria crit = DetachedCriteria.forClass(Storagefile.class);
crit.addOrder(bSortOrder ? Order.asc(sortColumnId) : Order.desc(sortColumnId));
 List<Storagefile> result = (List<Storagefile>) getHibernateTemplate().findByCriteria(crit, nFirst, nPageSize);

最佳答案

从您的示例代码中看不出来,但我的猜测是您正试图按 CLOB 列排序,而 Oracle 不允许这样做。该错误代码是 Oracle 告诉您这一点的迷人方式。

您确定需要使用 CLOB 来存储文件名吗? Oracle 可以在 VARCHAR2 列中存储多达 4000 个字符,这对于文件名来说肯定足够了吗?如果您想按 文件名 排序,那么这就是您需要做的。

关于java - 无法将 clob 数据类型从数据库获取到 JPA 实体中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951744/

相关文章:

java - 引用jar/war文件外的类

java - 使用自定义参数对列表进行排序

根据状态获取最新记录需要 SQL 吗?

hibernate - org.hibernate.QueryException : illegal attempt to dereference collection

java - 泛型和 "where"子句

java - 如何在Android Studio中使用View Parameter调用方法

sql - Oracle中如何计算唯一行数

oracle - 唯一键(不是主键)可以是其他表的外键吗?

java - org.hibernate.AssertionFailure : collection was processed twice by flush()

mysql - 将用户的数组列表存储到mysql中