栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将PostgreSQL JSON列映射到Hibernate值类型

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将PostgreSQL JSON列映射到Hibernate值类型

请参阅PgJDBC错误#265。

PostgreSQL过于严格,对数据类型转换非常严格。它

text
甚至不会隐式转换为像
xml
和这样的文本值
json

解决此问题的严格正确方法是编写一个使用JDBC

setObject
方法的自定义Hibernate映射类型。这可能有点麻烦,因此您可能只想通过创建较弱的强制转换来使PostgreSQL的严格性降低。

正如@markdsievers在评论和本博文中指出的那样,此答案中的原始解决方案绕过了JSON验证。因此,这并不是您真正想要的。写起来更安全:

CREATE OR REPLACE FUNCTION json_intext(text) RETURNS json AS $$SELECT json_in($1::cstring); $$ LANGUAGE SQL IMMUTABLE;CREATE CAST (text AS json) WITH FUNCTION json_intext(text) AS IMPLICIT;

AS IMPLICIT
告诉PostgreSQL它可以转换而无需显式通知,从而允许类似的工作:

regress=# CREATE TABLE jsontext(x json);CREATE TABLEregress=# PREPARE test(text) AS INSERT INTO jsontext(x) VALUES ($1);PREPAREregress=# EXECUTE test('{}')INSERT 0 1

感谢@markdsievers指出问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401331.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号