2014-01-30 4 views
0

Я работаю с устаревшей базой данных, и я пытаюсь получить спящий режим, чтобы помочь мне.Отображение коллекции спящего режима на основе свойства

У меня есть 3 таблицы, которые выглядят примерно так:

Table results: 
id (number pk) 
info_id (varchar) 
result (varchar) 

Table info 
id (number pk) 
info_id (varchar) 

Table registration 
id (number pk) 

Table letter 
id (number pk) 
registration_id 

Я только в состоянии изменить объект для письма, и в этом объекте я хочу, чтобы иметь возможность получить (только чтение) список результаты

public class Letter { 
    private Long id; 
    private Registration registration; 
    private List<Result> results; 
} 

объект регистрации уже существует, и выглядит следующим образом:

public class Registration { 
    private Long id; 
    private Info info; 
} 

Я пытаюсь г для отображения результатов объекта к объекту Письма, и я пытался что-то вроде этого:

<list name="results" table="result" cascade="none" inverse="false"> 
      <key property-ref="registration.info.info_id"/> 
      <index column="info_id " /> 
     <one-to-many class="Result" /> 
    </list> 

Я в принципе хочу Hibernate сделать объединение через цепочку объектов, и в конечном итоге получить SQL, который выглядит как:

SELECT * FROM result,letter,info WHERE letter.info_id=info.info_id AND info.info_id=result.info_id 
AND letter.id=?; 

Это что-то вроде этого жизнеспособного в спящем?

Редактировать: Данные и регистрация таблиц имеют одинаковый идентификатор. Итак info.id=registration.id. При необходимости я мог бы добавить Info в объект Letter.

+0

информация не имеет registration_id. – Zeus

+0

Я исправил запрос. См. Мои комментарии выше. Информация и регистрация имеют тот же ПК. –

ответ

0

По ссылке here. Отношения могут поддерживаться только с помощью внутренних соединений. Итак, да, вы можете это сделать. вам может потребоваться добавить registration.id = info.id вручную в запрос.

+0

Как мне отобразить это в XML. Есть ли способ в XML указать «letter.info_id = info.info_id AND info.id = letter.registration_id» или аналогичный? –

+0

Я ничего не нашел. Я думаю, что это невозможно сделать. – Zeus

+0

Спасибо за помощь. Я закончил создание представления, а затем использовал нормальное отображение «сумка». –

Смежные вопросы