Использование longblob в спящем режиме - PullRequest
2 голосов
/ 13 сентября 2010

Я новичок в мире гибернации и использую его для сопоставления таблицы, в которой хранятся файлы всех типов.Однако я получаю очень странную ошибку:

javax.servlet.ServletException: java.lang.ClassCastException: [B cannot be cast to java.sql.Blob

Я сопоставил свой столбец MySql LONGBLOB с: <property name="fileData" type="blob" .../> и <property name="fileData" type="longblog" .../>, но оба не работают.

I'mв настоящее время используется весенняя версия 3.x mvc, последняя версия и томкант 7, если это поможет.

edit: вот как выглядит мой POJO для fileObject:

package com.kc.models;

открытый класс FileObject {

private String fileName;
private String type;
private double size;
private byte[] file;
private int id;

public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getFileName() {
    return fileName;
}
public void setFileName(String fileName) {
    this.fileName = fileName;
}
public String getType() {
    return type;
}
public void setType(String type) {
    this.type = type;
}
public double getSize() {
    return size;
}
public void setSize(double size) {
    this.size = size;
}
public byte[] getFile() {
    return file;
}
public void setFile(byte[] file) {
    this.file = file;
}

}

А вот как выглядит мой файл hbm.xml:

<class name="com.kc.models.FileObject" table="FILES">
    <id name="id" column="ID">
        <generator class="native" />
    </id>
    <property name="fileName" type="string" column="FILENAME" />
    <property name="type" type="string" column="TYPE" />
    <property name="size" type="double" column="SIZE" />
    <property name="file" type="blob" column="FILE" />
</class>

O и вот экран печати mySql: http://img412.imageshack.us/img412/3663/fileobject.jpg

Ответы [ 3 ]

2 голосов
/ 14 сентября 2010

В сообщении об исключении говорится, что вы пытаетесь привести byte[] (представленный как [B) к java.sql.Blob:

java.lang.ClassCastException: [B cannot be cast to java.sql.Blob

Проблема, как представляется, в то время как вы определилиФайл свойств POJO как byte[], вы отображаете его как `java.sql.Blob 'при отображении Hibernate.

Попробуйте изменить тип свойства в POJO:

package com.kc.models;
public class FileObject {
    //...
    private java.sql.Blob file;
    //...
}
0 голосов
/ 18 июля 2013
public Blob getFile() {
    return Hibernate.createBlob(file);
} 
0 голосов
/ 02 апреля 2012

Попробуйте убедиться, что вы используете @Access (FIELD) по какой-то странной причине, работая в среде JaveSE (например, тест JUnit) и среде JaveEE (например, Glassfish). Я получаю разные результаты, но это было согласовано при добавлении аннотации @Access .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...