2011-04-09 183 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