2012-12-29 65 views
2

我有一個問題,當我在銀行內部錄製PDF文件時,我最好保存爲文件或字節[]?帶JPA註釋@ Lob的數據記錄類型是什麼?

@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

回答

0

使用字節數組,或InputStream或SQL blob類型。您不能將blob列映射到文件。

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

是將大量數據存儲在數據庫中的正確方法。您的錯誤表示您必須將方言包含在persistence.xml文件中。因此請確認您輸入了正確的Dialect屬性。

+0

謝謝大家,但這個錯誤我認爲這是與查詢的東西,存在另一種方式用Criteria API或其他方式在數據庫中搜索此文件?我使用org.hibernate.dialect.MySQLDialect。 – MiguelCPJava

+0

我找到了解決方案,查詢是肯定是什麼導致錯誤是組件p:commandButton在p:dialog.Então內部將按鈕更改爲h:commandButton並不再有錯誤。 – MiguelCPJava