byte []搞砸了数据库

时间:2013-03-31 18:26:25

标签: java hibernate postgresql

我有一个SWT / Hibernate / Postgresql应用程序,我想在我的数据库中添加一个像[] [并显示它]。

这里是在bean中加载图像的相关代码。 AFAIK,它可以正常工作。

InputStream is = new FileInputStream(file);
long length = file.length();
if (length > Integer.MAX_VALUE) {
    is.close();
    return false;
}
byte[] image = new byte[(int)length];
int offset = 0;
int numRead = 0;
while (offset < image.length && (numRead=is.read(image, offset, image.length-offset)) >= 0) {
    offset += numRead;
}
if (offset < image.length) {
    result = false;
}
is.close();

然后我只需在bean中设置我的byte []图像,使用这样的hibernate设置(传统的hbm.xml):

<property name="image" type="byte[]"/>

和这样的数据库设置:

CREATE TABLE ...
(
  ...
  image bytea,
  ...
)

当我在数据库中创建记录(工作)并立即使用代码在我的SWT应用程序中显示图像时(因此字节数组实际上是由上面的代码片段创建的),它可以正常工作并显示图像。但是当我运行我的应用程序并从数据库中检索记录时,图像是不可读的。我在创建时和数据库检索后记录了字节数组的内容,它们完全没有相同。可能是什么原因?

1 个答案:

答案 0 :(得分:0)

嗯,我觉得很蠢。仅仅是为了记录,只是我使用了驱动程序pg 8.4和pg 9.1数据库...