【问题标题】:Saving/Retrieving Binary data from database从数据库中保存/检索二进制数据
【发布时间】:2011-04-09 00:45:44
【问题描述】:

我在 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]

谢谢

【问题讨论】:

  • 请提供有关数据存储方式的更多详细信息。但奇怪的是,您获得的字节数是保存后的两倍。

标签: java hibernate postgresql tomcat


【解决方案1】:

检查您的 postgres jdbc 驱动程序版本。它至少应该与您的数据库服务器一样新,因此您需要 9.0 或更高版本的驱动程序。

我相信 bytea 线格式在 9.0 中发生了变化,如果你有一个旧驱动程序,这可以解释这个问题。

【讨论】:

  • 谢谢!!!我使用的是 jdbc 8.3,当我将其更改为 jdbc 9.0 时效果很好。
【解决方案2】:

您没有提供足够的详细信息,但我会冒昧地猜测您正在将字节转换为字符(您的输出看起来大约是输入的两倍,java 字符为 2字节)。字节!= 字符。

否则,可能与不正确使用流有关。

【讨论】:

  • 感谢您的回答。我总是使用字节数组,我不翻译数据。我认为这个问题可能与 Windows 中的 Java x64 有关
  • 我觉得这不太可能。意识到 BLOBS 和 CLOBS 在 Hibernate 中有点糟糕。不完全是它的错 - 但不同的数据库服务器在不同的实现中存在很多问题,随之而来的是一个伤害世界。
猜你喜欢
  • 2021-08-02
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多