2010-12-02 34 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字段的表的每一行。