无法从数据库中获取CLOB数据类型为JPA实体

问题描述:

我能救(弹簧休眠saveorupdate())字段无法从数据库中获取CLOB数据类型为JPA实体

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

到Oracle数据库中的数据类型是CLOB

但是当我尝试找回它,我得到错误

ERROR - JDBCExceptionReporter.logExceptions(72) | ORA-00932:不一致的数据类型: 预期 - 有CLOB

下面

是如何从数据库retrive

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来存储filnename吗? Oracle可以在VARCHAR2列中存储多达4000个字符,当然这对于文件名来说足够了?如果你想按filename排序,那么这就是你需要做的。

+0

我是对的。它是由它引起的排序 – cometta 2009-12-24 01:53:00

你有没有过这样涉水:

https://www.hibernate.org/56.html

似乎有是Oracle 9i驱动程序和LOB的问题(不知道你的设置是什么)。

+0

我升级到10gDialect,但仍然相同。 – cometta 2009-12-24 01:10:44