2011-03-22 43 views
1

我是JPA和休眠的新手。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多個

任何人都可以請讓我知道可能是什麼問題?

謝謝你在前進,

問候, NIRANJAN

回答

1

您需要使用最新的3.6.2的Hibernate和HSQLDB 2.1。 另外,使用LONGVARBINARY或BLOB的列來存儲圖像。一個BINARY列在圖像數據填充其聲明的長度後存儲額外的零字節,而另外兩個類型不添加零填充。

+0

Bravo !!!!你是救世主......我花了將近一天的時間試圖這樣做。 – Niranjan 2011-03-26 00:19:30