2011-04-09 180 views
0

我在tomcat 6.0.32 x64中部署了一個web應用程序,它使用Hibernate 3.0連接Postgres 9.0 x64數據庫。保存/檢索數據庫中的二進制數據

該應用程序保存在數據庫中的二進制字段,當我找到它時,它是不同的。

二元保存: [-82,120,71,23,-88,67,36,30,57,-72,42,29,-64,93,-8,-103,-63, 124,66,20]

二進制獲得: [-67,55%,56,52,55,49,55,97,56,52,51,50,52,49,101,51,57, 98,56,50,97,49,100,99,48,53,100,102,56,57,57,99,49,55,99,52,50,49,52]

謝謝

+0

請提供有關數據如何存儲的更多詳細信息。但是,特別的是,你已經獲得了兩倍的字節數。 – mdma 2011-04-09 01:52:41

回答

0

檢查您的postgres jdbc驅動程序版本。它應該至少和你的數據庫服務器一樣近,所以你需要一個9.0或更高的驅動程序。

我相信在9.0中改變了bytea線格式,如果你有一箇舊的驅動程序,這可以解釋這個問題。

+0

謝謝!我使用了jdbc 8.3,當我將它改爲jdbc 9.0時,它非常棒。 – 2011-04-09 19:04:09

0

你沒有提供足夠的細節,但是我要一邊出去,猜測在某些時候你正在將字節翻譯成字符(你的輸出看起來有兩次只要你的輸入,java字符都是2個字節)。字節!=字符。

否則,它可能與流的錯誤使用有關。

+0

感謝您的回答。我總是使用一個字節數組,我不翻譯數據。我認爲這個問題可能與Windows中的Java x64相關 – 2011-04-09 02:52:39

+0

我覺得這種可能性不大。意識到BLOBS和CLOBS有點吸吮Hibernate。不完全是它的錯 - 但不同的數據庫服務器在不同的實現方式上有太多的問題,這就造成了一個受到傷害的世界。 – MJB 2011-04-09 03:10:12