Вы не можете получить несколько объектов из одного запроса.
Но вы можете выбрать, какие столбцы вы хотите, и затем выполнить итерацию возвращенного массива объектов:
Запрос:
SELECT s.id, s.someColumn, slt.id, slt.structureId
FROM dbo.Structure AS s
JOIN dbo.StructureLocationType AS slt on slt.structureId = s.id
WHERE slt.locationTypeId = :lc
Затем выполнить итерацию по массиву объектов:
List<Object[]> result = query.getResultList();
Или вы можете создать представление в вашей базе данных и сопоставить его с сущностью java, используя аннотацию Table, как будто это обычная таблица:
@Entity
@Table(name = "STRUCTURE_LOCATION_TYPE_VIEW")
public class StructureAndLocationType {
// ...
}
Я думал, что есть способсопоставить запрос с объектом, не создавая представление БД, но не смог найти его прямо сейчас.