Nano Hash - криптовалюты, майнинг, программирование

получить ответ с определенными полями из результата соединения entityManager.createQuery() в Springboot API

Я использую Springboot с JPA для создания REST API. Я хочу получить все данные от студента и совпадающие строки с адреса, если он есть.

Ниже мой сервисРеализация

 EntityManager entityManager = entityManagerFactory.createEntityManager();
 query = entityManager.createQuery("select s , a  from Student s " +
                                         " left join Address a  " +
                                         " on s.id = a.student ")
       
        @SuppressWarnings("unchecked")
       List<Object> list = query.getResultList();

ниже представлена ​​моя студенческая организация

@Entity
class Student{
private int id,
private String name,

 @ManyToOne(optional = false)
 @NotNull
 @JsonIgnoreProperties(value = "student", allowSetters = true)
 private User user; // User another entity
  --- getter and setter --
}

ниже показан мой адрес

class Address{
private int id;
private String addressLine;

 @ManyToOne(optional = true)
 @JsonIgnoreProperties(value = "address", allowSetters = true)
 private Student student; 
   --- getter and setter --
}

Таким образом, он вернет все совпадающие строки с атрибутами отношений, как показано ниже.

[{
 id :1,
 name: "qwert",
 user:{
   id: 1,
   createdBy:1
   createdOn:2021-08-21
}
}
{
 id: 1,
 addressLine:"kkkkk",
 student{
 id :1,
 name: "qwert",
 user{
   id: 1,
   createdBy:1
   createdOn:2021-08-21
}}}]

**I want output be like below**

[
{
 id :1,
     name: "qwert",
     user:{
       id: 1
}},
{
     id: 1,
     addressLine:"kkkkk"
}]

Как мы можем этого добиться? Я пытался использовать POJO, но не смог этого добиться. Я новичок в Springboot и JPA. Может ли быть другой способ получить данные от несвязанных сущностей и вернуть POJO с определенными полями.


Ответы:


1

Это должно работать:

List<Object[]> list = query.getResultList();
for (Object[] element: list) {
   Student s = element[0|;
   Address a = element[1];
   //.... do whatever necessary to save result to dto list
}
27.04.2021
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..