Есть ли способ создавать списки объединенных объектов в запросах JPA?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли способ создавать списки объединенных объектов в запросах JPA?

Сообщение Anonymous »

В моей базе данных есть следующие объекты:

Код: Выделить всё

@Getter
@Entity
class TopLevel {
@Column
String name;
@OneToMany
List subtypes;
}

@Getter
@Entity
class SubTypeOne {
@ManyToOne()
SubTypeTwo property
}

@Getter
@Entity
class SubTypeTwo {
@Column
int finalProperty
}
У меня есть DTO, который выглядит следующим образом:

Код: Выделить всё

record TopLevelDto(String name, Collection subTypeTwoProperties) {}
Я хотел бы создать объект DTO непосредственно из запроса JPA с использованием JPQL. Прямо сейчас я могу эффективно создавать необходимые объекты, используя следующий код:

Код: Выделить всё

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);
Есть ли способ сделать все это только внутри самого запроса JPQL?
Я ожидаю, что функция или какой-либо другой механизм преобразует объект 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»