我是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
答案 0 :(得分:1)
您需要使用最新的Hibernate 3.6.2和HSQLDB 2.1。 另外,使用LONGVARBINARY或BLOB列存储图像。 BINARY列在图像数据之后存储额外的零字节以填充其声明的长度,而其他两种类型不添加零填充。