如何让字段成为BLOB而不是TINYBLOB?

时间:2012-09-18 10:21:45

标签: java image hibernate orm blob

如何让字段成为BLOB而不是TINYBLOB?

我的映射如下:

private byte[] ImageBytes;

public BufferedImage getImage() {
    InputStream in = new ByteArrayInputStream(ImageBytes);
    try {
        return ImageIO.read(in);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

public void setImage(BufferedImage image) {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    try {
        ImageIO.write(image, "PNG" /* for instance */, out);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    ImageBytes = out.toByteArray();
}

它会导致Hibernate在MySQL中创建一个不适合图像的TINYBLOB字段。

如何让它使用BLOB?

以下答案

@Lob(type = LobType.BLOB)

不起作用,因为@Lob注释在我的库中没有参数。

此外,我不想使用特定于ORM或DBMS的注释。

1 个答案:

答案 0 :(得分:2)

你可以这样试试;

@Lob
@Column(name="IMAGE", nullable=false, columnDefinition="blob")
private byte[] imageBytes;

确保您的图片数据类型为BLOB