繁体   English   中英

如何将Hibernate Blob转换回原始文件

[英]how to convert Hibernate Blob back to original File

我正在使用hibernate将压缩文件存储在数据库中,我已经使用Hibernate.createBlob(input stream)创建了Blob文件。

现在,我想反转该过程并将Blob转换为File,以便可以使用Zip4j打开它。我到底应该怎么做? 我试图做到这一点,但我总是遇到一个例外

  File file = new File("origfile.zip"); try { InputStream is = blob.getBinaryStream(); <- exception FileOutputStream opt = new FileOutputStream(file); int read = 0; byte[] bytes = new byte[1024]; while ((read = is.read(bytes)) != -1) { opt.write(bytes, 0, read); } 

唯一的例外是:

 2013-07-03 18:38:35,482 [DEBUG] [HibernateTransactionManager,doBegin(),569] - Exposing Hibernate transaction as JDBC transaction [com.mchange.v2.c3p0.impl.NewProxyConnection@69875a82] java.sql.SQLException: could not reset reader at org.hibernate.lob.BlobImpl.getBinaryStream(BlobImpl.java:106) at org.hibernate.lob.SerializableBlob.getBinaryStream(SerializableBlob.java:62) at com.gleeb.backbonetemplates.services.LivePreviewService.prepareDesignForLivePreview(LivePreviewService.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 

谢谢。

您可以在c#中遵循此示例解决方案, 此处的代码应该相对相似

我知道这不是理想的答案,但这是一个很好的起点。

我已经找到解决问题的办法。 我用来将Blob转换为文件的方式还可以。 由于休眠的自我问题,您可能会称呼它为例外。

为了防止发生异常,我需要在保存后执行refresh()。

session.refresh(blog);

而已。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM