0

我想将文件存储到数据库表中byte[]。现在我有一个关于将 a 存储byte[]postgres数据库表中的问题Hibernate。我的Entity课堂上有这个实现:

@Column
private byte[] bytes;

在我的数据库表中,它显示bytebyte[].

现在我可以plaintext在此列中看到(在我的例子中是文件的名称,我想将其存储在数据库中)。对于每个字节,它将在数据库列中重复文件名。但为什么?

是否需要另一个 Hibernate 注释?

感谢帮助!

格雷茨马尔维夫

4

3 回答 3

3

您必须使用@Lob注释该字段。

注意:如果列是自动生成的,您可能会考虑使用附加注释设置列定义(例如,对于 MYSQL):

@Column(columnDefinition="LONGBLOB")//or VARBINARY(128) if you need a smaller limit
于 2013-10-30T09:43:38.883 回答
0

Domain

    import javax.persistence.Lob;
    @Lob
    private byte[] image;

Repository layer

   byte[] image = getImageAsBytes();
   domain.setImage(image);
   entityManager.save(domain);

它应该有效,至少它对我们有效。没有特别的魔法

于 2013-10-30T11:19:53.417 回答
0
@Column(columnDefinition = "LONGBLOB")
private byte[] bytes;
于 2013-10-30T11:05:31.233 回答