У меня проблема с запросами в Hibernate. У меня есть таблица 'test' с существующими данными. У меня есть требование, при котором я не могу изменить схему тестовой таблицы, поэтому я создал другую таблицу 'testExtension', первичный ключ которой является внешним ключом первичного ключа Test. Данные в testExtension - это подмножество данных в тесте. т.е. в testExtension будет меньше строк, чем в test.
Я определил это отношение в файле конфигурации следующим образом:
<class name="Test" table="test">
<id name="testId" column="test_id">
<generator class="sequence">
<param name="sequence">test_id_seq</param>
</generator>
</id>
<property name="name"/>
<joined-subclass name="TestExtension" table="testExtension">
<key column="test_id"/>
<property name="summary" />
<property name="homepage"/>
</joined-subclass>
С помощью этой настройки я могу создать объект TestExtension в моей Java-программе, заполнить его данными, «сохранить» его через Hibernate и зафиксировать транзакцию. И он правильно сохраняет данные как в Test, так и в TestExtension.
Моя проблема возникает, когда я пытаюсь запросить данные из этих таблиц. Прямо сейчас, если я запрашиваю определенный test_id, используя TestExtension.class для QBE, он вернет строку, только если этот идентификатор существует как в Test, так и в TestExtension. Если я использую Test.class для QBE, он вернет строку, но у меня не будет доступа ни к каким данным, хранящимся в TestExtension.
Мой вопрос: как я могу запросить эти таблицы, чтобы результаты основывались на «левом внешнем соединении» как Test, так и TestExtension? Любое решение приветствуется, будь то запрос по примеру, HQL или что-то еще (хотя желательно не в виде необработанного SQL).
Спасибо!