Я использую Spring 3.0 с Hibernate и PostgreSQL, и у меня возникла следующая проблема:
Я загружаю файлы в базу данных, сохраняю их тип содержимого, и все работает нормально, размер поля в базе данных в порядке. Однако, когда я пытаюсь загрузить его, Hibernate возвращает массив байтов в два раза больше, чем должен. Скачанные файлы конечно повреждены. Размер в 2 раза больше, чем размер в базе данных ... Мой код выглядит следующим образом:
Класс области поля (с отображением):
private byte[] cv;
@Column(name="cv")
public byte[] getCv() {
return this.cv;
}
Функция DAO, которая загружает объект:
public Candidate load(Integer id) {
return (Candidate) getHibernateTemplate().get(Candidate.class, id);
}
Конфигурация фабрики сеанса:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.jdbc.batch_size">30</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="packagesToScan" value="foo.foo.core.domain"/>
</bean>
Создание SQL:
CREATE TABLE candidate
(
id serial NOT NULL,
cv bytea,
...
)
База данных кодируется в UTF-8, если это имеет какое-либо значение.
Я пытался с org.springframework.jdbc.support.lob.DefaultLobHandler, но он не работает .. Есть идеи? Это сводит меня с ума ..