java-使用Hibernate在MySQL中存储字节数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用Hibernate在MySQL中存储字节数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1923字,纯文字阅读大概需要3分钟。
内容图文
![java-使用Hibernate在MySQL中存储字节数组](/upload/InfoBanner/zyjiaocheng/885/4015200250214c54aa7179c861be7d8b.jpg)
我正在尝试使用字节数组字段保存实体.我在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中引用它:
<?xml version='1.0' encoding='UTF-8'?>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="mappingResources">
<list>
<value>blob.hbm.xml</value>
</list>
</property>
</bean>
blob.hbm.xml映射:
<hibernate-mapping>
<class name="guiatv.persistence.domain.Blob" table="blob">
<property name="blobImgProperty">
<column name="blobImg" sql-type="binary"></column>
</property>
</class>
</hibernate-mapping>
方法4:
将blob.hbm.xml映射更改为以下内容:
<?xml version='1.0' encoding='UTF-8'?>
<hibernate-mapping>
<class name="guiatv.persistence.domain.Blob" table="blob">
<property name="blobImg" type="binary">
<column name="blobImg" />
</property>
</class>
</hibernate-mapping>
他们都抛出相同的异常.
我该如何解决?
谢谢!
解决方法:
如果要将byte []转换为sql类型Blob,则可以执行以下操作:
@Lob(type = LobType.BLOB)
要么
@Type(type = "org.hibernate.type.BlobType")
@Lob
希望能帮助到你
内容总结
以上是互联网集市为您收集整理的java-使用Hibernate在MySQL中存储字节数组全部内容,希望文章能够帮你解决java-使用Hibernate在MySQL中存储字节数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。