Сопоставить NativeQuery с POJO - PullRequest
       13

Сопоставить NativeQuery с POJO

0 голосов
/ 12 апреля 2019

У меня есть NativeQuery, который я хочу сопоставить с POJO.

Я попробовал следующее, но оно заканчивается бесконечным циклом.

public synchronized List<FreeIP> getFirstFreeHost() {
    String q = "SELECT i.subnet, h.ip_host FROM ip_addresses i join hosts h on i.id = h.ip_addresses_id ORDER BY i.subnet, h.ip_host";
    this.entityManager = this.entityManagerFactory.createEntityManager();
    Query query = this.entityManager.createNativeQuery(q);
    List<Object[]> rows = query.getResultList();
    List<FreeIP> result = new ArrayList<>();
    for (Object[] row : rows) {
        result.add(new FreeIP((String) row[0], (String) row[1]));
    }

    return result;
}

1 Ответ

0 голосов
/ 12 апреля 2019

Посмотрите на QLRM: https://github.com/simasch/qlrm

Тогда вы можете сделать:

JpaResultMapper jpaResultMapper = new JpaResultMapper();

Query q = em.createNativeQuery("SELECT i.subnet, h.ip_host FROM ip_addresses i join hosts h on i.id = h.ip_addresses_id ORDER BY i.subnet, h.ip_host");

List<EmployeeTO> list = jpaResultMapper.list(q, FreeIP.class);

Убедитесь, что у FreeIP есть конструктор, который принимает все аргументы вашего запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...