我在 MemSql 数据库中有一个表,其中包含一个 JSON 类型的列。

我正在尝试执行以下查询。

select tweet from tweets_json;
tweet 列是 JSON 列。

这是我用来执行此查询的代码。
public List<String> getTweets(){
    Query q = entityManager.createNativeQuery("select tweet from tweets_json");
    List<String> resultList = query.getResultList();
}

我期望结果是一个字符串列表和每个字符串来表示 JSON。

问题是我将字符串转换为单个 Character 对象,该对象仅包含 JSON { 的第一个字符。

无论我使用的列表项是什么类型,结果始终是一个带有左大括号符号的字符列表。

我尝试使用 List<Object[]>List<String[]>List<Object>List<JsonElement> 并且都返回相同的结果。

我什至试图不指定列表元素的类型,只返回一个列表,结果仍然相同。

如何获取整个 JSON 以及此问题的根本原因是什么?

最佳答案

您需要使用 JSON_EXTRACT_STRING 函数。

select JSON_EXTRACT_STRING(tweet,0) from tweets_json;

确切的函​​数定义是:
JSON_EXTRACT_<type>(json, keypath)

您可以在此处找到示例:
https://docs.memsql.com/sql-reference/v6.7/json_extract_type/

和这里

Reading JSON from MEMSQL

对于使用 EntityManager/HibernateSession 的常见情况,a custom Hibernate Type is necessary

10-07 16:34
查看更多