Копируете ваш комментарий сюда, потому что он добавляет некоторые детали:
У меня есть такие данные [{id: 's1', события: [{name: 'one'}, {name: 'два '}]}, {id:' s2 ', события: [{name:' three '}, {name:' four '}]}], и я хочу получить такой результат [{name:' one '}, {name: 'two'}, {name: 'three'}, {name: 'four'}]
Запущенный вами запрос возвращает результаты следующего типа, если я запускаю его на MongoDB изначально(Я заполнил его некоторыми случайными данными):
{ "name" : "Event 3", "time" : NumberLong(3) }
{ "name" : "Abrakadabra", "time" : NumberLong(5) }
Этого недостаточно для перестройки сущности, и именно поэтому вы видите исключение.
Учитывая, что вам нужен только списоксобытий, это должно работать:
List<Object[]> poems = em.createNativeQuery( queryString ).getResultList();
Hibernate OGM преобразует предыдущий результат в список массивов.Каждый элемент списка - это массив, в котором первое значение массива - это имя события, а второй - время.
Для поддерживаемых случаев, подобных этому, я думаю, что запросы HQL лучше.Вы можете переписать этот пример следующим образом:
String queryString =
"SELECT e.name " +
"FROM MySession s JOIN s.events e " +
"WHERE e.name LIKE 'Abrakadabra'";
List<Object[]> events = em.createQuery( queryString ).getResultList();
Обратите внимание, что я решил не возвращать время, потому что в своем комментарии вы не запрашивали его, но это также будет работать:
String queryString =
"SELECT e.time, e.name " +
"FROM MySession s JOIN s.events e " +
"WHERE e.name LIKE 'Abrakadabra'";
List<Object[]> events = em.createQuery( queryString ).getResultList();