我正在尝试使用字节数组字段保存实体.我在MySQL数据库上使用Hibernate和JPA.
这是字段定义,它对于嵌入式H2数据库运行良好:
@Entity(name = "blob")
public class Blob {
...
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "blobImg", nullable = false)
private byte[] blobImg;
}
现在,对于MySQL数据库,每次执行blobRepository.save()时都会引发异常.实际上,当Hibernate尝试自动创建Blob实体表时,可能会抛出.例外情况如下:
o.h.engine.jdbc.spi.SqlExceptionHelper : You have an error in your
SQL syntax; check the manual that corresponds to your MySQL server
version for the right syntax to use near ‘blob (blobCols, blobImg,
blobRows, channel, idBlobPersistence) values (50, _bina’ at line 1
我尝试使用在网络上找到的几种方法来更改字段定义:
方法1:
@Column(name = "blobImg", nullable = false, columnDefinition = "BINARY(256)", length = 256)
private byte[] blobImg;
方法二:
@Lob
@Column(name="blobImg", columnDefinition="bytea")
private byte[] blobImg;
方法3:
在blob.hbm.xml文件上定义一个休眠映射,并从EntityManagerFactory bean中引用它:
blob.hbm.xml
blob.hbm.xml映射:
方法4:
将blob.hbm.xml映射更改为以下内容:
他们都抛出相同的异常.
我该如何解决?
谢谢!