JPA - 更新二进制数据
Posted
技术标签:
【中文标题】JPA - 更新二进制数据【英文标题】:JPA - Update binary data 【发布时间】:2011-03-22 00:17:55 【问题描述】:我是 JPA 和休眠的新手。
我正在使用 HSQLDB 2.0 和 hibernate-JPA 将图像插入 BINARY 列。我注释如下
@Lob
private byte[] profileImage;
我可以将图像插入数据库。
我正在从数据库中检索实体以及二进制列并将字节数组转换为图像。
但是当我请求在更新后再次持久化实体时,我收到以下错误。
Caused by: org.hibernate.exception.DataException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:77)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
... 68 more
引起:java.sql.BatchUpdateException:数据异常:字符串数据,右截断 在 org.hsqldb.jdbc.JDBCPreparedStatement.executeBatch(未知来源) 在 org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48) 在 org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246) ... 76 更多
谁能告诉我可能是什么问题?
提前谢谢你,
问候, 尼兰詹
【问题讨论】:
【参考方案1】:您需要使用最新的 Hibernate 3.6.2 和 HSQLDB 2.1。 此外,使用 LONGVARBINARY 或 BLOB 列来存储图像。 BINARY 列在图像数据之后存储额外的零字节以填充其声明的长度,而其他两种类型不添加零填充。
【讨论】:
以上是关于JPA - 更新二进制数据的主要内容,如果未能解决你的问题,请参考以下文章
Java EE/JPA:提高查询性能 - 将 UUID 存储为二进制