Ответ
Нет. Нативный SQL-запрос (через @NamedNativeQuery или EntityManager.createNativeQuery()) оперирует на уровне таблиц базы данных, а не на уровне объектных ассоциаций JPA. Он выполняется без учета отображения сущностей и их связей.
Пример:
@Entity
@NamedNativeQuery(
name = "findUserWithAddress",
query = "SELECT u.*, a.* FROM users u JOIN addresses a ON u.address_id = a.id",
resultClass = User.class
)
public class User {
@ManyToOne
private Address address; // Эта ассоциация игнорируется при построении нативного запроса
}
Чтобы работать с ассоциациями, необходимо:
- Вручную сопоставить результаты запроса с объектами.
- Использовать JPQL/HQL, который понимает объектную модель и ассоциации.
- Применить
@SqlResultSetMappingдля детального кастомного маппинга результатов SQL в сущности и их связи.