Как сопоставить собственные результаты sql с полем oneToMany с помощью SqlResultSetMapping в JPAJAVA

Программисты JAVA общаются здесь
Anonymous
Как сопоставить собственные результаты sql с полем oneToMany с помощью SqlResultSetMapping в JPA

Сообщение Anonymous »

Например, предположим, что у меня есть следующие таблицы базы данных

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

Building
-----------
id
name
и

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

Room
-----------
id
roomNo
buildingId
Класс Building Java будет выглядеть примерно так:

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

@Entity
public class Building {
private int id;
@OneToMany private List rooms;
...
У меня есть следующий SQL для получения данных о здании

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

SELECT   b.id,
b.name,
r.id AS rid,
r.roomNo
FROM     Building b
LEFT JOIN Room r ON
b.id = r.buildingId
результат будет

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

id, name, rid, roomNo
---------------------
1, 'b1', 10, 'r100'
1, 'b1', 11, 'r101'
2, 'b2', 12, 'r10'
Обратите внимание, что существуют дублирующиеся объекты Building из-за отношений «один ко многим».

Я знаю, что могу получить объект Building, просто используя JPQL, но я хочу сделать это с помощью собственного SQL. Итак, как мне сопоставить приведенный выше результат обратно с классом Building, используя @SqlResultSetMapping JPA?

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