0

这可能是一个重复的问题,但以前的答案都不适合我。我正在尝试将 byte[] 存储在 ormlite 中,但出现以下错误。

java.sql.SQLException: ORMLite does not know how to store class [B for field 'imageBytes'. byte[] fields must specify dataType=DataType.BYTE_ARRAY or SERIALIZABLE

我已经在 java 类和配置文件中添加了字段类型作为 dataType=DataType.BYTE_ARRAY 。这是我的Java类。

public class ImageData {

    @DatabaseField
    private long id;

    @DatabaseField(dataType = DataType.BYTE_ARRAY)
    byte[] imageBytes;

    public ImageData() {
    }

    public ImageData(long id, byte[] imageBytes) {
        this.id = id;
        this.imageBytes = imageBytes;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public byte[] getImageBytes() {
        return imageBytes;
    }

    public void setImageBytes(byte[] imageBytes) {
        this.imageBytes = imageBytes;
    }
    public void saveImage(DatabaseHelper dbHelper) throws java.sql.SQLException{
        Dao<ImageData,Long> dao = dbHelper.getImageDataDao();
        dao.createOrUpdate(this);
    }
    public static ImageData getImage(DatabaseHelper dbHelper,long id)throws java.sql.SQLException{
        Dao<ImageData,Long> dao = dbHelper.getImageDataDao();
        ImageData obj = dao.queryForId(id);
        return obj;
    }
}

这是我的 ormlite_config.txt 文件内容。

# --table-start--
dataClass=com.sample.model.ImageData
tableName=imageData
# --table-fields-start--
# --field-start--
fieldName=id
generatedId=true
allowGeneratedIdInsert=true
# --field-end--
# --field-start--
fieldName=imageBytes
dataPersister = DataType.BYTE_ARRAY
# --field-end--
# --table-fields-end--
# --table-end--

dataPersister按照这个答案中的建议使用了。除了 dataPersister,我还在我的配置文件中尝试了 dataType。我无法找到解决方案。我的代码有什么问题?

4

1 回答 1

0

我按照这个答案中的建议使用了 dataPersister 。除了 dataPersister,我还在我的配置文件中尝试了 dataType。

该答案明确表示您应该使用dataPersister = BYTE_ARRAY not DataType.BYTE_ARRAY。你试过吗?

于 2020-07-09T22:28:33.397 回答