спящий нативный запрос вложенный объект dto - PullRequest
0 голосов
/ 29 марта 2020

Есть ли способ вернуть вложенный объект, используя собственный запрос Hiberate?

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

    sql.append("SELECT t.id, ")
            .append(" worker.city AS `work_address.city`,")
            .append(" worker.state AS `work_address.state`,")
            .append(" other_worker.city AS `other_work_address.city`,")
            .append(" other_worker.state AS `other_work_address.state`")
            .append(" FROM thing t")
            .append(" JOIN user worker ON woker.id = t.worker_id")
            .append(" JOIN user other_worker ON other_woker.id = t.other_worker_id")

Я выполняю этот запрос следующим образом:

Query query = entityManager.createNativeQuery(sql.toString(), MyResult.class);

Мне бы хотелось, чтобы мой результат был таким:

public class ThingFilterResult {

    @Id
    private Long id;
    private Address workAddress;
    private Address otherWorkAddress;

}

public class Address {

    private String city;
    private String state;
}

Есть ли решение для привязки запроса результата к вложенному объекту?

Мне нужно использовать нативный запрос, я не могу использовать HQL ... по другим причинам ...

Я также читал об этом решении, и это работает, но я не могу изменить его, я бы изменил многие существующие коды:

spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

Я использую Spring boot 2.2.5 и Hibernate 5.4.12

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