2013-03-17 2 views
0

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

Эти две таблицы не имеют отношения к первичному ключу внешнего ключа.

Таблица 1.

valcode nvarchar2(10) 
value number 
datemodified date 

таблица 2

id number 
result nvarchar2(10) 

SQL-запрос:

select a.valcode, b.id, b.result from table1 a,table2 b (+) on a.valcode=b.id order by a.valcode 

Как преобразовать этот запрос к запросу спящего режима с аннотациями в классе таблицы?

+0

Да классы сопоставлены с аннотациями для столбцов и первичных ключей. Часть, в которой вы связываете две таблицы. и поскольку у меня есть два компонента для двух таблиц, я не знаю, как написать мой запрос hql. – BaN3

+0

Нам понадобится сопоставление, чтобы помочь. – benzonico

+0

Вы присоединяетесь к предложению 'a.valcode = b.id', но оба они являются разными типами данных. Это рабочий SQL? –

ответ

0

Это действительно хороший вопрос. Я еще не пришел к этой проблеме; поэтому, я также интересен в любом возможном решении.

Если я правильно понял, между этими двумя таблицами нет никаких «естественных» отношений. Поэтому я не уверен, есть ли простой и эффективный способ сделать это с Hibernate, используя HQL или Criteria.

Как получить представление, используя SQL, который вы хотите, и отобразить это представление с помощью объекта Hibernate?

0

Насколько я знаю из гибернации документации, вы можете использовать выборки атрибутов на отношениях аннотации и установить его на FetchType.EAGER:

У вас есть возможность либо охотно или лениво выборки связанных сущностей. Параметр выборки может быть установлен на FetchType.LAZY или FetchType.EAGER. EAGER попытается использовать внешнее соединение, чтобы выбрать для получения связанного объекта, тогда как LAZY запускает только выбор , когда связанный объект будет доступен в первый раз. @OneToMany и @ManyToMany ассоциации по умолчанию имеют значение LAZY, а @OneToOne и @ManyToOne по умолчанию - EAGER.

Вы можете найти полную документацию here.

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