2012-12-19 40 views
1

該代碼在我的控制器插入字節數組冬眠

FileInsertion fileInsertion = new FileInsertion(); 
FileUpload fileUpload = new FileUpload(); 
fileUpload.setFilename((InputStream) new ByteArrayInputStream(byteArray)); 
    //byteArray is the file converted into a byte[] 
fileInsertion.insertFile(fileUpload); 

    //the following happens in a separate method 
trns = session.beginTransaction(); 
session.save(fileUpload); 
session.getTransaction().commit(); 

Hibernate映射文件

<hibernate-mapping> 
    <class name="com.sort.process.FileUpload" table="fileupload"> 
     <meta attribute="class-description"> 
      This class contains the file upload detail. 
     </meta> 
     <id name="Id" type="int" column="Id"> 
      <generator class="increment" /> 
     </id> 

     <property name="filename"> 
      <column name="filename" /> 
     </property> 
    </class> 
</hibernate-mapping> 

我的目標是插入一個文件到一個數據庫表在該地方的BLOB對象。 但是我得到這個

Initial SessionFactory creation failed.org.hibernate.MappingException: Could not determine type for: java.io.InputStream, at table: fileupload, for columns: [org.hibernate.mapping.Column(filename)] 

我嘗試了上面使用ByteArrayInputStream代替InputStream,卻徒勞無功。 任何人都可以讓我知道我的代碼中的錯誤是什麼?
在此先感謝

回答

1

直接在您的模型中使用byte []應該工作。即,fileUpload.setFilename(byteArray)

請記住,最好使用有意義的名稱。有人可能會期望fileUpload.getFileName()返回文件名稱,而不是原始數據。

+0

非常好,謝謝你工作得很好。我也跟着命名方法'setFile(...)'和'getFile()'的提示 – Freakyuser