2

我有一个问题,当我在银行内录制PDF文件时,我最好保存为文件或字节[]?

@Lob @Basic(fetch=FetchType.EAGER)
@Column(name="arqdocumento")
private File arquivo; 

或者

@Lob
@Basic(fetch=FetchType.EAGER)
@Column(name="arqdocumento")
private byte[] arquivo; 

以及如何从数据库中获取此文件并在浏览器中显示?

我想知道为什么我这样做:

public File getDocumentoBinary(int iDdocumento){
   Query consulta = getSesseion().createSQLQuery("SELECT arqdocumento FROM documento WHERE iddocumento = :id");
   consulta.setInteger("id", iDdocumento);
   return  (File) consulta.uniqueResult();     }

但显示此错误:

原因:org.hibernate.MappingException:没有 JDBC 类型的方言映射:-4

4

2 回答 2

2
@Lob
@Basic(fetch=FetchType.EAGER)  
@Column(name="arqdocumento")  
private byte[] arquivo;  

是在数据库中存储大量数据的正确方法。您的错误表明您必须在 persistence.xml 文件中包含方言。因此,请确认您输入了正确的方言属性。

于 2012-12-29T11:57:40.110 回答
0

使用字节数组、InputStream 或 SQL blob 类型。您不能将 blob 列映射到文件。

于 2012-12-29T03:00:32.483 回答