Hibernate一直没有加载Postgresql bytea

时间:2010-12-02 12:42:33

标签: java hibernate postgresql

我在两个不同的盒子上使用Hibernate 3.6,它们都从完全相同的数据库表中读取。两个字段的Hibernate注释是这样的:

@Basic(fetch=FetchType.EAGER)
@Column(name="encryptedkey",length = 256)
protected byte[] encryptedKey;

@Basic(fetch=FetchType.EAGER)
@Column(name="encryptediv",length = 256)
protected byte[] encryptedIV;

现在,当在一台机器(带有Sun JDK 1.6.0_22-b04的Ubuntu Linux)上加载具有这些属性的实体时,我能够加载256字节的加密密钥和IV。

但是,在另一台计算机(带有Sun JVM 1.6.0_22-b04的Windows 2003服务器SP2企业版)上并非如此,我为每个字段加载了0或511个字节。否则,两个系统上的Jar文件都是相同的。

数据库引擎是PostgreSQL 9.0,我正在使用最新的PostgreSQL JDBC驱动程序。

任何人都知道会出现什么问题?

2 个答案:

答案 0 :(得分:2)

事实证明,JRE lib文件夹中有一个PostgreSQL 8.4驱动程序。删除它解决了这个问题。

答案 1 :(得分:0)

明确的解决方案:

ALTER DATABASE myAmazingDbOnALinuxServer SET bytea_output = 'escape'; 

PD:此变量可能与Windows上安装的Postgre不兼容,会对包含bytea列的表的每一行产生COPY错误。