Как сохранить байт [] в ORMLite Android? - PullRequest
0 голосов
/ 09 июля 2020

Это может быть повторяющийся вопрос, но ни один из предыдущих ответов мне не подошел. Я пытаюсь сохранить 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

Я уже добавил тип поля как dataType = DataType.BYTE_ARRAY в класс java, а также в файл конфигурации . Вот мой класс 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 также в моем файле конфигурации. Я не могу найти решение. В чем проблема с моим кодом?

1 Ответ

0 голосов
/ 10 июля 2020

Я использовал dataPersister, как предложено в этом ответе . Вместо dataPersister я также пробовал dataType в моем файле конфигурации.

В этом ответе конкретно говорится, что вы должны использовать dataPersister = BYTE_ARRAY , а не DataType.BYTE_ARRAY. Вы пробовали это?

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