难以使用hibernate将ArrayList设置为java.sql.Blob以保存在数据库中

难以使用hibernate将ArrayList设置为java.sql.Blob以保存在数据库中,java,hibernate,blob,Java,Hibernate,Blob,我试图通过将java ArrayList设置为blob,将其保存在数据库(H2)中,以便稍后检索。如果这是一个糟糕的方法,请说-我还没有找到这方面的很多信息 我在数据库中有一个Blob类型的列,Hibernate使用java.sql.Blob映射到此列。我正在挣扎的代码是: Drawings drawing = new Drawings(); try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); Objec

我试图通过将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);
}
我试图保存到blob(
plan.drawingPane21.pointList
)中的对象的类型为
ArrayList
DrawingDot
是实现
可序列化的自定义类

我的代码在
drawingBlob.setBytes(0,buff)行失败带有
NullPointerException


感谢您的帮助。

您从未初始化过变量drawingBlob:

Blob drawingBlob = null;//<- not initialized
drawingBlob.setBytes(0, buff);//<- drawingBlob is null here.

Blob drawingBlob=null// 如果有人遇到同样的问题,我通过利用
SerialBlob
类的构造函数而不是使用setBytes来解决:

byte[] buff = bos.toByteArray();
Blob drawingBlob = null;
drawingBlob = new SerialBlob(buff);
drawing.setDrawingObject(drawingBlob);