Есть ли способ вернуть вложенный объект, используя собственный запрос 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