Java查询数据类型及如何转换?

时间:2018-11-28 06:04:19

标签: java

我是Python开发人员,但现在有一个Java项目。

我从不编写Java代码,所以我对Java的查询语法有疑问。

第一:

TypedQuery<String> query1= JPA.em().createQuery("Select distinct c.host from  table As c", String.class);

 List<String> results = query1.getResultList();
    JsonArray value =  new JsonArray();
    for (int j=0; j < results.size(); j++) {
         System.out.println(results.get(j));
        }

另一个:

TypedQuery<Object[]> query2 = JPA.em().createQuery("Select distinct c.version, c.year, c.month, c.rate, c.tcount from sw_fig1 As c ,object[].class);    
  1. 关于TypedQuery<>的类型取决于每个中有多少个结果 数据?

    像第一个查询仅选择一个列,以便它设置String?许多列使用object[]吗?

    还是我需要的数据类型?

  2. 我想通过JSON将名为 results 的列表发送到前面,所以我新建了一个JsonArray,并尝试在JSONArray中添加 results 的数据。 / p>

    但是会出错:

    add(com.google.gson.JsonElement) to JsonArray cannot be applied to (java.lang.String) 
    

    我打印显示的结果类型:

    java.util.ArrayList.
    

    这让我感到困惑,因为我以为JSONArray可以将数组或字符串添加为正确的值?

我该如何解决它,如果有人能让我知道这个概念,我将非常感激。

2 个答案:

答案 0 :(得分:1)

  1. 类型基本上取决于您在createQuery方法中写的内容 https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#createQuery-java.lang.String-java.lang.Class-

您可能希望使用Java泛型

  1. 从您的错误中可以看出,您正在使用Gson,所以您

    List<String> listStrings = new ArrayList<String>();
    listStrings.add("a");
    listStrings.add("b");
    
    Gson objGson = new Gson();
    System.out.println(objGson.toJson(listStrings));
    

Add List<String> to the JSONArray

答案 1 :(得分:0)

您可以通过实现Serializable并创建@Produces(MediaType.JSON)到端点来创建自己的对象,这些对象将自动转换为JSON。这些是Spring(SerializeRequestMapping)批注,用于处理那些烦人的转换。

public class JSON implements Serializable {...}

@GetMapping("/get")
@Produces(MediaType.JSON)
public JSON getJson(){...}

您的查询将如下所示

TypedQuery<JSON> query2 = JPA.em().createQuery("Select distinct c.version, c.year, c.month, c.rate, c.tcount from sw_fig1 As c ,JSON.class);