我有一个 SWT/Hibernate/Postgresql 应用程序,我想在我的数据库中添加一个图像作为 byte[] 并显示它。
这里是在 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();
然后我简单地将我的 byte[] 图像设置在一个 bean 中,使用这样的休眠设置(旧版 hbm.xml):
<property name="image" type="byte[]"/>
和这样的数据库设置:
CREATE TABLE ...
(
...
image bytea,
...
)
当我在数据库中创建记录(有效)并立即使用代码在我的 SWT 应用程序中显示图像时(因此字节数组实际上是由上面的代码创建的),它工作正常并显示图像。但是当我运行我的应用程序并从我的数据库中检索记录时,图像是不可读的。我在创建时和数据库检索后记录了字节数组的内容,它们根本不一样。可能是什么原因?