JPA - обновить двоичные данные - PullRequest
1 голос
/ 22 марта 2011

Я новичок в 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: исключение данных: строковые данные, усечение справа at org.hsqldb.jdbc.JDBCPreparedStatement.executeBatch (неизвестный источник) в org.hibernate.jdbc.BatchingBatcher.doExecuteBatch (BatchingBatcher.java:48) в org.hibernate.jdbc.AbstractBatcher.executeBatch (AbstractBatcher.java:246) ... еще 76

Может кто-нибудь сообщить мне, в чем может быть проблема?

Заранее спасибо,

С уважением, Niranjan

1 Ответ

1 голос
/ 22 марта 2011

Вам необходимо использовать последнюю версию Hibernate 3.6.2 и HSQLDB 2.1.Кроме того, используйте столбец LONGVARBINARY или BLOB для хранения изображений.Столбец BINARY хранит дополнительные нулевые байты после данных изображения, чтобы заполнить его объявленную длину, тогда как два других типа не добавляют заполнение нулями.

...