我正在尝试通过将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>DrawingDot是实现Serializable的自定义类。

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

帮助表示赞赏。

最佳答案

如果有人遇到同样的问题,我可以利用SerialBlob类的构造函数而不是使用setBytes来解决:

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

10-06 04:53