Как получить данные из необработанного запроса при весенней загрузке? - PullRequest
1 голос
/ 23 сентября 2019

У меня есть запрос:

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

Я не знаю, как получить эти идентификаторы ("8" и "16")

Ответы [ 3 ]

0 голосов
/ 23 сентября 2019

1.Я думаю, это то, что вы ищете ... Преобразование JPA query.getResultList () в МОИ объекты .

или

List<Object[]> rows = q.getResultList(); for (Object[] row : rows) { System.out.println(row[0]); } 
0 голосов
/ 23 сентября 2019

Если я правильно понял, вы ищете разделенную запятыми строку идентификаторов.Если это так, то следующие шаги могут помочь вам решить проблему.

  1. Создайте конструктор в таблице, который имеет только один идентификатор параметра.(Если вы хотите, вы также можете добавить больше параметров, но убедитесь, что значение, которое вы хотите, должно быть в конструкторе и в запросе.)

  2. Напишите SQL-запрос и выполните его.

  3. Возвращает результат и собирает его в List, содержащий объект таблицы.

  4. Получите строку

dataList.stream (). Map (obj -> obj.getId ()). Collect (Collectors.joining (","))

Это даст вамстрока через запятую.

0 голосов
/ 23 сентября 2019

в этой строке

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]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...