У меня есть собственный SQL-запрос в Hibernate (3.5.2), в котором я хочу вернуть сопоставленный объект и связанный (присоединенный) объект.Тем не менее, Hibernate, похоже, дает мне список массивов, а не список объектов.
Чтобы немного упростить мою ситуацию: -
Entity1 содержит внешний ключ для Entity2 и сопоставленныйОбъекты настроены так, что Entity1 имеет свойство объекта, ссылающееся на Entity2.Я хочу получить список объектов Entity1, но с уже инициализированной ссылкой на связанный объект (так что связанный объект был загружен).
Теперь я могу сделать это с помощью пользовательского запроса SQL, такого как:
final SQLQuery qry = hibernateSession.createSQLQuery(
"select {entity1.*}, {entity2.*} from entity1 inner join entity2 on entity1.fk = entity2.id ");
qry.setReadOnly(true);
qry.addEntity("entity1", Entity1.class);
qry.addJoin("entity2", "entity1.entity2");
List list = qry.list(); // Returns list of arrays!!
Это работает, так как все объекты Entity1 правильно инициализированы.Однако список, который я получаю, НЕ является простым списком объектов Entity1.На самом деле это список массивов, где каждый массив содержит 2 элемента - Entity1 и Entity2.Я предполагаю, что это потому, что я поместил две записи псевдонимов в предложении SELECT.
Если я удаляю второй псевдоним (для Entity2), я просто получаю ошибки «столбец не найден» - возможно, потому что Hibernate можетне можете найти поля для инициализации entity2.
Есть идеи?У меня есть запрос, который может вернуть поля для основного и связанного объекта, но я хочу, чтобы возвращаемый список был просто списком объектов Entity1.
Упреждающий комментарий: Да, я знаю, что, вероятно, мог бы реструктурировать это и выполнить запрос другим способом (API критериев и т. Д.).Но это то, что я застрял на данный момент.В этой конкретной ситуации меня сдерживают некоторые другие факторы, поэтому я надеялся, что есть какой-то способ сказать Hibernate, что я хочу!
Спасибо.