注释@Lob和JPA的数据记录是什么类型的?

时间:2012-12-29 02:02:24

标签: java hibernate jpa lob

我有一个问题,当我在银行内录制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类型的Dialect映射:-4

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

使用字节数组,或InputStream或SQL blob类型。您无法将blob列映射到文件。