这可能是一个重复的问题,但以前的答案都不适合我。我正在尝试将 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。我无法找到解决方案。我的代码有什么问题?