【发布时间】: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。
我试过了:
- 添加了@Type(type="text") - 主要问题已解决,但我得到了 CLOB id 而不是 CLOB 中的真实信息;
- 添加到@Column() columnDefinition = TEXT/CLOB - 不起作用;
添加了@Type(type="materialized_clob") 或@Type(type="clob") - 不起作用;
从使用此实体的方法中删除了@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