我在两个不同的盒子上使用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驱动程序。
任何人都知道会出现什么问题?
答案 0 :(得分:2)
事实证明,JRE lib文件夹中有一个PostgreSQL 8.4驱动程序。删除它解决了这个问题。
答案 1 :(得分:0)
明确的解决方案:
ALTER DATABASE myAmazingDbOnALinuxServer SET bytea_output = 'escape';
PD:此变量可能与Windows上安装的Postgre不兼容,会对包含bytea列的表的每一行产生COPY错误。