【发布时间】:2017-06-19 21:19:52
【问题描述】:
我最近升级了 Spring Boot,随之而来的是休眠升级。不幸的是,实体列@Type(StringClobType) 注释已被弃用。文档告诉我我需要将其切换到MaterilizedClobType。
不幸的是,这破坏了我的应用程序。
我使用的是 PostgreSQL 9.5。 StringClobType 注释在数据库中创建了一个 text 类型,它允许我在字段中存储长文本。不幸的是,当 Hibernate 期待某种 LOB id 时,字符串文字又回来了。
这给出了错误:Bad value for type long
【问题讨论】:
-
Postgres 在记录其扩展数据类型(如
text)如何映射到 JDBC 方面做得很差,但它看起来和听起来好像org.hibernate.type.TextType可能是映射类型列的选择text。 Hibernate 说它映射到 JDBC 的LONGVARCHAR类型。目前尚不清楚该类型的特征是否与 PG 的Text完全匹配,但它们似乎很接近。 -
您可以在成员变量上方提及 @Lob 注释。在将对象持久化到数据库中时,如果字符串超出其限制,Hibernate 会自动获取 CLOB,并将输入作为数据库中的 text。
-
@JohnBollinger,你一针见血。谢谢!请将此添加为合法答案,我会将其标记为已接受。
标签: java postgresql hibernate jpa spring-boot