- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用 hibernate 3.6.7 将我的类映射到 oracle 表。我通常不会得到这个异常:
org.hibernate.HibernateException: Unable to access lob stream
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at com.mycompany.TransferFiles.TransferFilesToHadoop(TransferFiles.java:85)
at com.mycompany.TransferJob.execute(TransferJob.java:25)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
Caused by: org.hibernate.HibernateException: Unable to access lob stream
at org.hibernate.type.descriptor.java.ClobTypeDescriptor.unwrap(ClobTypeDescriptor.java:117)
at org.hibernate.type.descriptor.java.ClobTypeDescriptor.unwrap(ClobTypeDescriptor.java:46)
at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$3$1.doBind(ClobTypeDescriptor.java:83)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:91)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:283)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:278)
at org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:89)
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2184)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2558)
at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2494)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2821)
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:113)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:185)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at com.mycompany.HibernateUtil.getSession(HibernateUtil.java:36)
at com.mycompany.BasicDaoImpl.saveOrUpdate(BasicDaoImpl.java:34)
at com.mycompany.FileCopyRoutine.call(TransferFiles.java:297)
at com.mycompany..FileCopyRoutine.call(TransferFiles.java:225)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: Closed Connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.sql.CLOB.getDBAccess(CLOB.java:1196)
at oracle.sql.CLOB.getCharacterStream(CLOB.java:278)
at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.engine.jdbc.SerializableClobProxy.invoke(SerializableClobProxy.java:74)
at $Proxy2.getCharacterStream(Unknown Source)
at org.hibernate.type.descriptor.java.ClobTypeDescriptor.unwrap(ClobTypeDescriptor.java:114)
当我调用 saveOrUpdate 方法时。
谁能给我一些建议?
public static synchronized Session getSession() throws DBConnectionException{
Session session = threadSession.get();
if(session==null||!session.isOpen()||!session.isConnected()){
if(sessionFactory==null||sessionFactory.isClosed())initHibernate();
try{
session = sessionFactory.openSession();
}catch(Exception e){
throw new DBConnectionException("Exception caught when trying to generate Hibernate session.");
}
threadSession.set(session);
}
if(session.isDirty()){
session.flush();(36 line of HibernateUtil)
}
session.clear();
return session;
}
我都用了很久。
现在我正在并行传输文件,然后使用 saveOrUpdate 方法更新数据库。虽然有很多线程,但我在我的代码中同步了这部分。我认为我们一直都连接到数据库,但它给出了关闭连接的异常。谁能给我一些关于这个异常的建议。问题应该是什么?
我认为可能是因为使用了saveOrUpdate,所以我改用merge,但同样有同样的问题。
Caused by: org.hibernate.HibernateException: Unable to access lob stream
at org.hibernate.type.descriptor.java.ClobTypeDescriptor.unwrap(ClobTypeDescriptor.java:117)
at org.hibernate.type.descriptor.java.ClobTypeDescriptor.unwrap(ClobTypeDescriptor.java:46)
at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$3$1.doBind(ClobTypeDescriptor.java:83)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:91)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:283)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:278)
at org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:89)
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2184)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2558)
at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2494)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2821)
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:113)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:185)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
at mycompany.jobsrc.BasicDaoImpl.merge(BasicDaoImpl.java:52)
at mycompany.FileCopyRoutine.call(TransferFiles.java:301)
at mycompany.FileCopyRoutine.call(TransferFiles.java:226)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: Closed Connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.sql.CLOB.getDBAccess(CLOB.java:1196)
at oracle.sql.CLOB.getCharacterStream(CLOB.java:278)
at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.engine.jdbc.SerializableClobProxy.invoke(SerializableClobProxy.java:74)
at $Proxy2.getCharacterStream(Unknown Source)
at org.hibernate.type.descriptor.java.ClobTypeDescriptor.unwrap(ClobTypeDescriptor.java:114)
... 27 more
我的合并代码:
public void merge(T t) throws DBConnectionException{
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
session.merge(t);
transaction.commit();
}
最佳答案
尝试在您尝试访问 lob 字段对象的服务方法上添加 @Transactional。它对我有用。
关于java - org.hibernate.HibernateException : Unable to access lob stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9023819/
我正在做这个项目,其中我有一个用 Java (HttpServlet) 完成的 Web 服务,它使用 Hibernate 选择、插入和更新信息到数据库中,并将对象数组作为 JSON 返回给连接到 JS
我尝试同时修改大约 14 个 REST 实体。 前几次修改是成功的(以及中间的一些修改),其他一些修改偶尔会失败,出现 HibernateException。 这是我的 servlet: public
假设我们有一些看起来像这样的实体(我会尽量保持简单): @Entity class MainEntity { //nothing too special here } @Entity class
我有这个项目设置,我正在尝试使用 JPA 和 Hibernate 作为提供程序来将数据存储在我的本地 h2 数据库中。它全部配置为我的 spring 项目的一部分,我使用 tomcat 作为我的服务器
我正在尝试测试 hibernate 在我的项目中是否工作,因为我正在尝试创建 session ,IDEA 告诉我 org.hibernate.HibernateException 和 java.lan
我正在使用带有基本 hibernate 程序的 MySQL Workbench 5.2 CE 数据库在运行时它给我错误: Caused by: org.hibernate.HibernateExcep
我有一个执行以下步骤的应用程序: 在 session 中放置对象: def product = Product.get(1) session["product"] = product 执行 Ajax
我在 Hibernate 和 Spring 开发方面绝对是新手,我有以下问题 我有一个名为 KM_ProjectInfoStatus 的实体类,它映射一个名为 KM_PROJECT_INFO_STAT
我不断收到此错误...使用 appach tomcat 的 Eclips IDE 根本原因 java.lang.ClassNotFoundException: org.hibernate.Hibern
我是 Hibernate 的新手。我创建了一个简单的程序来使用 Hibernate 将值插入数据库。 我的文件结构是这样的 src -> com.visolve -> AddStudent.java
嗨,我面临一个非常奇怪的问题。我正在使用 Spring MVC 3.0+Spring Security 3.2+hibernate 4.3。在登录之前,我可以在登录之前访问数据库并获取实体。但是通过
我想使用审核数据库插件将构建信息记录到数据库中。我已正确安装插件并使用以下配置: JDBC Driver class: org.hsqldb.jdbc.JDBCDriver** JDBC Url:jd
我在我的 Web 应用程序中使用 Spring Transactional 和 AspectJ。 应用程序上下文.xml
我目前使用confluence和mysql制作个人wiki。但是我有 500 异常 HibernateException。 汇合日志: Caused by: com.atlassian.conflue
这个问题在这里已经有了答案: java.lang.ClassNotFoundException: org.hibernate.HibernateException (5 个答案) 关闭 5 年前。
我是 Hibernate 的新手,在应用程序中定义 JPQL 查询时遇到以下问题。 所以我有以下情况: 1)我有这个模型KMCountryArea类,它被注释为将其映射到数据库表并定义了一个查询 @N
这是代码的最小版本,我花了很多时间才弄清楚为什么它不起作用: Query q = session.createQuery(queryString); q.setTimestamp(0, new jav
我试图删除数据库中不存在的实体,但 delete() 方法没有抛出任何异常。 当我试图删除一个不存在的实体时,如何得到一个错误? 我已经在下面复制了我的代码: public void remove(M
我收到此错误消息: error: Found shared references to a collection: Person.relatedPersons 当我尝试执行 addToRelatedP
完整的堆栈跟踪: org.hibernate.HibernateException: Could not instantiate resultclass: com.firstbankpr.lmu.da
我是一名优秀的程序员,十分优秀!