You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JPA原生查询获取JSON字段的数据类型返回疑问

问题解答

1. 查询返回的类型

默认情况下,你的JPA原生查询返回的会是字符串形式的JSON,而非JSONObject对象。
原因是JPA本身没有内置机制能自动将数据库的JSON类型字段直接映射为org.json.JSONObject(或其他JSON库的JSONObject)。数据库返回的JSON数据会以字符串形式传递给JPA,不会自动完成序列化/反序列化转换。

2. 返回类型是否需要修改

如果返回的是字符串形式的JSON,必须把方法的返回类型改成String,否则会触发类型转换异常。修改后的方法定义如下:

@Query(value = "select data from Table where id=:id", nativeQuery = true)
String findData(@Param("id") String id);

额外补充:如何直接返回JSONObject

如果希望直接得到JSONObject对象,需要额外配置类型转换:

  • 自定义JPA属性转换器(AttributeConverter),实现数据库JSON字符串与JSONObject的双向转换;
  • 使用支持JSON类型映射的JPA扩展(比如Hibernate的JsonBinaryType),配合实体类上的类型注解完成自动映射。

内容的提问来源于stack exchange,提问作者Umar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:46:39