有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在spring boot中从原始查询中获取数据?

我有一个问题:

Query q = em.createNativeQuery("select DISTINCT id, rating, random() as ordering FROM table\n" +
                " WHERE id not in (1,2) ORDER BY ordering LIMIT 10");
List data = q.getResultList();

此列表中的每个元素都是类似数组的对象:

my list

我想检索“8”和“16”并组成一个逗号分隔的字符串(将来在“不在”部分的查询中使用它):

for (Object x : data) {
    System.out.println(Arrays.asList(x).get(0));
}

但它会产生字符串:

[Ljava.lang.Object;@ee93cd3
[Ljava.lang.Object;@62f3c3e1

我不知道如何获得ID(“8”和“16”)


共 (3) 个答案

  1. # 1 楼答案

    在这一行

    List<Object[]> data = q.getResultList();
    

    数据是表单对象的列表

    [ [1,233, 0.000333], [1,233, 0.000333] ]
    
    for (Object[] x : data) {
        // x is [1,233, 0.000333]
        System.out.println(x[0]);
    }
    
  2. # 3 楼答案

    如果我理解正确,您正在寻找以逗号分隔的ID字符串。 如果是这样,那么遵循这些步骤可能会帮助您解决问题

    1. 在只有一个参数ID的表中创建一个构造函数(如果需要,还可以添加更多参数,但确保所需的值必须在构造函数和查询中)

    2. 编写sql查询并执行它

    3. 它返回结果并将其收集到包含表对象的列表中

    4. 获取字符串

    dataList.stream().map(obj -> obj.getId()).collect(Collectors.joining(", "))

    这将为您提供逗号分隔的字符串