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

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

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

С уважением, Ниранджан


person Niranjan    schedule 22.03.2011    source источник


Ответы (1)


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

person fredt    schedule 22.03.2011