使用hibernate在blob的位置插入字节数组

时间:2012-12-19 11:42:47

标签: spring hibernate spring-mvc blob

我的控制器中的代码

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对象的位置将文件插入到db表中。 但是我得到了这个

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 个答案:

答案 0 :(得分:1)

直接在模型中使用byte [],应该可行。即,fileUpload.setFilename(byteArray)

请记住,最好使用有意义的名称。有人可能希望fileUpload.getFileName()返回文件名,而不是原始数据。