[英]Difficulty setting ArrayList to java.sql.Blob to save in DB using hibernate
我正在嘗試通過將Java ArrayList設置為Blob來將其保存在數據庫(H2)中,以供以后檢索。 如果這是一個不好的方法,請說-我在這方面找不到很多信息。
我在數據庫中有一列Blob類型,並且Hibernate使用java.sql.Blob映射到該列。 我正在努力的代碼是:
Drawings drawing = new Drawings();
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = null;
oos = new ObjectOutputStream(bos);
oos.writeObject(plan.drawingPane21.pointList);
byte[] buff = bos.toByteArray();
Blob drawingBlob = null;
drawingBlob.setBytes(0, buff);
drawing.setDrawingObject(drawingBlob);
} catch (Exception e){
System.err.println(e);
}
我要保存到對象中的對象( plan.drawingPane21.pointList
)類型為ArrayList<DrawingDot>
, DrawingDot
是實現Serializable
的自定義類。
我的代碼在drawingBlob.setBytes(0, buff);
上失敗 使用NullPointerException
。
幫助贊賞。
如果有人遇到相同的問題,我可以通過利用SerialBlob
類的構造函數而不是使用setBytes來解決:
byte[] buff = bos.toByteArray();
Blob drawingBlob = null;
drawingBlob = new SerialBlob(buff);
drawing.setDrawingObject(drawingBlob);
您從未初始化變量drawingBlob:
Blob drawingBlob = null;//<- not initialized
drawingBlob.setBytes(0, buff);//<- drawingBlob is null here.
我對Hibernate的了解非常有限,但是我相信,如果將數據類型映射到Blob,則hibernate將為您執行序列化,這很有意義,因為在Blob中設置數據的標准方法是通過參數化方法PreparedStatement的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.