问题描述
通过hibernate查询10W级别的数据分批次查询每次100条直接出大对象Object对象里面有几十个属性其中有几个属性对应数据库字段类型为Clob类型有什么好的办法解决.在线等啊Junittest报出的错误debug的参数-Xms256m-Xmx1024mjava.lang.OutOfMemoryError:Javaheapspaceatoracle.jdbc.driver.T4C8TTIClob.read(T4C8TTIClob.java:191)atoracle.jdbc.driver.T4CConnection.getChars(T4CConnection.java:2614)atoracle.sql.CLOB.getChars(CLOB.java:354)atoracle.sql.CLOB.getSubString(CLOB.java:247)atorg.springframework.jdbc.support.lob.OracleLobHandler.getClobAsString(OracleLobHandler.java:187)atorg.springframework.jdbc.support.lob.AbstractLobHandler.getClobAsString(AbstractLobHandler.java:45)atorg.springframework.orm.hibernate3.support.ClobStringType.nullSafeGetInternal(ClobStringType.java:77)atorg.springframework.orm.hibernate3.support.AbstractLobType.nullSafeGet(AbstractLobType.java:157)atorg.hibernate.type.CustomType.nullSafeGet(CustomType.java:128)atorg.hibernate.type.AbstractType.hydrate(AbstractType.java:105)atorg.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2124)atorg.hibernate.loader.Loader.loadFromResultSet(Loader.java:1404)atorg.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1332)atorg.hibernate.loader.Loader.getRow(Loader.java:1230)atorg.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603)atorg.hibernate.loader.Loader.doQuery(Loader.java:724)atorg.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)atorg.hibernate.loader.Loader.doList(Loader.java:2228)atorg.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)atorg.hibernate.loader.Loader.list(Loader.java:2120)atorg.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)atorg.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)atorg.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)atorg.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)atorg.hibernate.impl.QueryImpl.list(QueryImpl.java:102)atorg.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:930)atorg.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)atorg.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)atorg.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:921)atorg.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:913)atcom.hundsun.gildata.irp.common.dao.impl.CommonDaoSpringHibernateImpl.findByIds(CommonDaoSpringHibernateImpl.java:98)atcom.hundsun.gildata.irp.core.service.impl.ReportServiceImpl.checkReport(ReportServiceImpl.java:6432)
解决方案
解决方案二:
CLOB太大的话,别一次取出来,一点一点取,直到取完长度。内存放不下的。
解决方案三:
引用1楼xiaopeipei2004的回复:
CLOB太大的话,别一次取出来,一点一点取,直到取完长度。内存放不下的。
一点一点怎么取啊...