2014-03-24 3 views
0

Я использую ядро ​​Hibrnate 4.3.0.Hibernate 4.3.0.Final: выберите на несколько таблиц

У меня есть 2 стол; Таблица А связана M: N сама с собой с помощью таблицы В

У меня есть эта структура:

Таблица A:

  • ID: первичный ключ
  • ИМЯ: наименование элемента
  • СОСТОЯНИЕ: состояние элемента

ТАБЛИЦА В:

  • * id_source *: FK к таблице А
  • * ID_TARGET *: FK в таблице A
  • * RELATION_NAME *: название отношения типа

В таблице B первичный ключ является составным, состоящим из ID_SOURCE и ID_TARGET.

Теперь я смог создать все правильно распределенные классы; Теперь I'ld любит, чтобы сделать следующий запрос:

select 
    ID, 
    NAME, 
    STATE 
from 
    TABLE_A this1, TABLE_B src1_ 
where 
    src1_.ID_SOURCE=4018 
    and src1_.ID_TARGET=this1.ID 

Теперь я знаю, я могу использовать HQL и/или родной SQL для создания такого рода запросов, но I'ld любит использовать Hibernate Criteria или лучше DetachedCriteria

Можно ли создать такой запрос с помощью DetachedCriteria?

Спасибо

Angelo

+0

Вы пробовали? Что не удается или что вы не понимаете?Потому что сейчас ответ «да». – mabi

+0

@mabi Да, я пробовал несколько комбинаций, но безуспешно, и я все больше уверен, что с помощью DetachedCriteria не удается создать такой запрос .... у вас есть какой-нибудь фрагмент кода, который я могу взять в себя –

ответ

0

Я предполагаю, что я нашел способ сделать это с помощью setFetchMode; в основном я написал эту DetachedCriteria (примечание: я сопоставляются поля отношений с fetch=FetchType.LAZY):

DetachedCriteria dc = DetachedCriteria.forClass(B.class); 
dc.setFetchMode("tgtA", FetchMode.JOIN); 
dc.add(Property.forName("srcA.id").eq(4018l)); 

Это был нанят спящего режима в следующем запросе:

select 
    b.ID_SOURCE, 
    b.ID_TARGET, 
    b.RELATION_NAME, 
    a.ID, 
    a.NAME, 
    a.STATE 
from 
    B b 
inner join 
    A a on b.ID_TARGET=a.ID_ENTITY 
where 
    b.ID_SOURCE=? 

Теперь мне было интересно, какие спектакли когда я выполняю такой запрос ... это правильный способ сделать это?

Спасибо

Angelo

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