java – 使用带有MemSql的JPA本机查询选择json列

我在MemSql数据库中有一个表,其中包含一个JSON类型的列.我正在尝试执行以下查询.select tweet from tweets_json;推文列是JSON列.这是我用来执行此查询的代码.public ListString getTweets(){Query q = entityMan...

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

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

select tweet from tweets_json;

推文列是JSON列.

这是我用来执行此查询的代码.

public List<String> getTweets(){
    Query q = entityManager.createNativeQuery("select tweet from tweets_json");
    List<String> resultList = query.getResultList();
}

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

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

无论我使用的列表项的类型如何,结果始终是带有打开的大括号符号的Character列表.

我尝试使用List< Object []>,List< String []&gt ;, List< Object&gt ;, List< JsonElement>并且所有人都回归相同的结果.

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

我怎样才能获得整个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时的常见情况,用户类型是nessesary https://vladmihalcea.com/how-to-map-json-objects-using-generic-hibernate-types/

本文标题为:java – 使用带有MemSql的JPA本机查询选择json列

基础教程推荐