【发布时间】:2011-02-21 00:54:14
【问题描述】:
我正在使用带有 Hibernate 和 PostgreSQL 的 Spring 3.0,但遇到以下问题:
我正在将文件上传到数据库,保存其内容类型,一切正常,数据库中字段的大小正常。但是,当我尝试下载它时,Hibernate 返回的字节数组是它应该的两倍。下载的文件当然已损坏。大小是数据库中大小的 ESXACTLY 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,但它并没有做到这一点。有什么想法吗?快把我逼疯了..
【问题讨论】:
-
你确定是Hibernate返回了错误的数组,而不是之后一些转换的结果吗?
标签: hibernate spring postgresql bytearray blob