如何使用Hibernate将图像存储到PostgreSQL数据库中

4
我希望通过Hibernate和Java将图像存储到数据库中。我正在使用Postgres数据库。
我尝试使用bytea数据类型来存储图像,并在Hibernate POJO中使用byte[]数据类型。
我使用了以下代码:
CREATE TABLE photo
(
  "photo_name" bytea
)
WITH (OIDS=FALSE);
ALTER TABLE photo OWNER TO postgres;

Hibernate Pojo

public class PhotoEntity {

byte[] name;

public byte[] getName() {
    return name;
}

public void setName(byte[] name) {
    this.name = name;
}

但是在映射时出现了错误。
请给我提供任何参考资料以完成此操作。


展示你的真实代码,并告诉我们确切完整的错误信息,其中可能包含有意义的信息,而不仅仅是一个“你做错了”的标志。 - JB Nizet
您好,映射时出现了错误,因为 bytea 无法与 byte[] 或 byte 进行映射。所以我很困惑该在 Hibernate POJO 中使用哪种数据类型来替代 byte[] 或 byte。 - Dnyani
1
你必须提供你使用的精确映射代码和错误信息,才能得到任何人的帮助。 - Craig Ringer
你解决了这个问题吗? - Arya
1个回答

5
如果您正在使用JPA2通过Hibernate,您可能需要@Lob注释,但我不确定这是用于oid还是bytea字段。请参见:proper hibernate annotation for byte[]。此外,有一篇Hibernate开发博客文章非常详细。如果您是通过XML映射或其自己的注释方言使用Hibernate,请展示您的确切代码和错误消息。另请参见这里的答案。

我怀疑当@Lob映射到OID时,Hibernate不会在通过DELETEUPDATE等失去对其引用之前或之后lo_unlink LOB。 - 1737973

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接