2010-12-02 37 views
2

我在两个不同的盒子上使用Hibernate 3.6,它们都是从完全相同的数据库表中读取的。 Hibernate的注解为两个领域是这样的:Hibernate无法正常加载Postgresql bytea

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

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

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

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

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

任何人有任何想法可能会出错?

+0

postgre列的类型是数组吗? – Bozho 2010-12-02 12:51:21

+0

postgre中的类型是`bytea` – malaverdiere 2010-12-03 04:28:02

回答

2

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

0

明确的解决办法:

ALTER DATABASE myAmazingDbOnALinuxServer SET bytea_output = 'escape'; 

PD:这个变量可以用Postgre不相容安装在Windows备份,将抛出一个COPY错误包含bytea字段的表的每一行。