3

フィールドをTINYBLOBではなくBLOBにする方法は?

私のマッピングは次のとおりです。

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 固有の注釈を使用したくありません。

4

1 に答える 1

2

このように試すことができます。

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

また、画像のデータ型が であることを確認してくださいBLOB

于 2012-09-18T11:21:05.097 に答える