Код: Выделить всё
@Getter
@Entity
class TopLevel {
@Column
String name;
@OneToMany
List subtypes;
}
@Getter
@Entity
class SubTypeOne {
@ManyToOne()
SubTypeTwo property
}
@Getter
@Entity
class SubTypeTwo {
@Column
int finalProperty
}
Код: Выделить всё
record TopLevelDto(String name, Collection subTypeTwoProperties) {}
Код: Выделить всё
String query = """
SELECT t
FROM TopLevel t
LEFT JOIN FETCH t.subtypes st
LEFT JOIN FETCH st.property
"""
// code to get TopLevel Object from query omitted
TopLevel t = ??
List subTypeTwoProperties = t.getSubtypes().stream()
.map(s -> s.getProperty().getFinalProperty())
.toList();
TopLevelDto dto = new TopLevelDto(t.getName(), subTypeTwoProperties);
Я ожидаю, что функция или какой-либо другой механизм преобразует объект st в запросе в список. Например, я называю это Collect_list здесь:
Код: Выделить всё
String query = """
SELECT new TopLevelDto(t.name, collect_list(st.property))
FROM TopLevel t
LEFT JOIN FETCH t.subtypes st
LEFT JOIN FETCH st.property
"""
Подробнее здесь: https://stackoverflow.com/questions/793 ... pa-queries
Мобильная версия