我在 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 。