JPA - 更新二进制数据

时间:2011-03-22 00:17:56

标签: jpa hsqldb binary-data

我是JPA和hibernate的新手。

我使用HSQLDB 2.0和hibernate-JPA将图像插入BINARY列。我注释如下

@Lob
private byte[] profileImage;

我可以将图像插入数据库。

我正在从数据库中检索实体以及二进制列,并将字节数组转换为Image。

但是当我要求在更新后再次坚持该实体时,我会收到以下错误。

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个

任何人都可以让我知道可能是什么问题吗?

提前谢谢你,

此致 NIRANJAN

1 个答案:

答案 0 :(得分:1)

您需要使用最新的Hibernate 3.6.2和HSQLDB 2.1。 另外,使用LONGVARBINARY或BLOB列存储图像。 BINARY列在图像数据之后存储额外的零字节以填充其声明的长度,而其他两种类型不添加零填充。