Это довольно необычный случай использования, и я догадываюсь только теоретически.
Я сделал конфигурацию так же, как и у вас, особенно, что обе сущности имеют точно такие же базовые поля (это те, которые будут рассмотрены при сопоставлении результатов с классами).
Я использую JPA 2.1 и Hibernate 5.x в качестве реализации под капотом.
К моему недоумению оба запроса корректно запускаются и присваивают результаты, как ожидалось, соответствующим полям в каждом из классов.
Я пошел немного глубже в реализации и в основном то, что происходит за кулисами:
- Создание списка типа
List<Object[]>
в качестве первого шага, который является стандартом поведения для createNativeQuery (String) без указанного класса.
- Установка полей класса с использованием отражения. Так что это действительно не имеет значения из какой таблицы мы вытягивать результаты .. имена столбцов и типов должны соответствовать ..
И несколько советов для конца:
- Класса указан в качестве второго параметра должен всегда быть управляемым объектом или встраиваемым
- Когда я пытался запросить только определенные столбцы, я получал ошибки с отсутствующими столбцами, отсутствующими в запросе. Так что, я думаю, вам всегда нужно выбирать все.
Надеюсь, это прояснит ситуацию.
кто знает, что такое «DojoClass». Возможно, когда вы определите пример, показывающий сам класс ... –
@NeilStockton: Я имею в виду, что DojoClass - это только простой Java-файл с именем: DojoClass.java. Наиболее важным является то, что класс имеет те же переменные с EntityClass. – user3205761