【问题标题】:org.hibernate.HibernateException: Unable to access lob stream Postgresql 9.6org.hibernate.HibernateException:无法访问 lob 流 Postgresql 9.6
【发布时间】:2019-11-21 08:32:17
【问题描述】:

请帮我解决这个奇怪的问题。

昨天没有对代码和数据库进行任何更改,当我尝试调用端点时出现错误: org.hibernate.HibernateException: 无法访问 lob 流。

在项目中:

  • Hibernate v. 5.3.10.Final
  • Spring-jdbc v. 5.1.8.RELEASE
  • PostgreSQL JDBC 驱动程序 - JDBC 4.2
    42.2.5
  • Postgers 数据库 - 9.6

这样的实体:

@Lob
@Column(nullable = true)
@Basic(fetch = FetchType.EAGER)
private String payload;

我在休眠日志中发现可能的问题可能出在 o.h.t.descriptor.sql.BasicExtractor 中提取 CLOB。最奇怪的是,在开发阶段一切正常,但在开发阶段我们有 postgres 10.1。

我试过了:

  1. 添加了@Type(type="text") - 主要问题已解决,但我得到了 CLOB id 而不是 CLOB 中的真实信息;
  2. 添加到@Column() columnDefinition = TEXT/CLOB - 不起作用;
  3. 添加了@Type(type="materialized_clob") 或@Type(type="clob") - 不起作用;

  4. 从使用此实体的方法中删除了@Transactional - 不起作用;

在开发阶段,我在日志中看到:

TRACE o.h.t.descriptor.sql.BasicExtractor - extracted value ([payload4_0_1_] : [CLOB]) - [{"adId":2,"syncStatus":2,"syncErrorCode":0,"syncErrorText":"","crdate":"Sep 25, 2017, 7:16:25 PM","upddate":"Aug 28, 2019, 2:19:00 PM"}]

在另一个阶段,我看到如果 CLOB 为空 - 它可以工作,如果不是空 - 我会收到错误。

我希望有人可以帮助我,如果信息不够,我准备提供更多信息。

提前致谢!

【问题讨论】:

    标签: java postgresql hibernate


    【解决方案1】:

    我找到了可能的根本原因:DB 中发生了一些事情,CLOB 被删除,只有关系 ID 保留在 DB 中。 对于之前的行,我在 CLOB 字段中得到类似 2341535 的内容,用于当前 - 真正的 json-object。

    【讨论】:

      猜你喜欢
      • 2012-02-19
      • 1970-01-01
      • 2019-03-03
      • 2019-05-29
      • 2019-05-08
      • 2018-02-22
      • 2023-04-06
      • 2021-07-29
      • 2017-04-05
      相关资源
      最近更新 更多