我是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);
关于TypedQuery<>
的类型取决于每个中有多少个结果
数据?
像第一个查询仅选择一个列,以便它设置String?许多列使用object[]
吗?
还是我需要的数据类型?
我想通过JSON将名为 results 的列表发送到前面,所以我新建了一个JsonArray,并尝试在JSONArray中添加 results 的数据。 / p>
但是会出错:
add(com.google.gson.JsonElement) to JsonArray cannot be applied to (java.lang.String)
我打印显示的结果类型:
java.util.ArrayList.
这让我感到困惑,因为我以为JSONArray可以将数组或字符串添加为正确的值?
我该如何解决它,如果有人能让我知道这个概念,我将非常感激。
答案 0 :(得分:1)
您可能希望使用Java泛型
从您的错误中可以看出,您正在使用Gson,所以您
List<String> listStrings = new ArrayList<String>();
listStrings.add("a");
listStrings.add("b");
Gson objGson = new Gson();
System.out.println(objGson.toJson(listStrings));
答案 1 :(得分:0)
您可以通过实现Serializable
并创建@Produces(MediaType.JSON)
到端点来创建自己的对象,这些对象将自动转换为JSON。这些是Spring(Serialize和RequestMapping)批注,用于处理那些烦人的转换。
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);