2013-06-10 8 views
0

Я использую Java с Hibernate 3.присоединяется в спящем режиме

У меня есть SQL следующим образом:

select sd3.id as id_3, sd2.id as id_2, sd1.id as id_1, od.id as id_0 from developer as sd3 
    left outer join developer as sd2 on sd3.sr_developer_id = sd2.id 
    left outer join developer as sd1 on sd2.sr_developer_id = sd1.id 
    left outer join developer as od on sd1.sr_developer_id = od.id 
where sd3.id = 812 

Это случай я присоединиться.

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

разработчик

id | sr_developer_id 
--------------------- 
812 | 463 
463 | 8 
8 | NULL 

Выход выше запроса:

id_3 | id_2 | id_1 | id_0 
-------------------------- 
812 | 463 | 8 | NULL 

Теперь я хочу, чтобы преобразовать этот запрос либо в HQL или в критериях. Может ли кто-нибудь мне помочь?

EDIT: -

Developer.java

private long id; 
private long srDeveloperID; 

public long getId() { 
    return id; 
} 

public void setId(long id) { 
    this.id = id; 
} 

public long getSrDeveloperID() { 
    return srDeveloperID; 
} 

public void setSrDeveloper(long srDeveloperID) { 
    this.srDeveloperID = srDeveloperID; 
} 

Developer.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping > 
    <class name="com.beans.Developer" table="developer"> 
     <id name="id" column="id" type="long"> 
      <generator class="native"/> 
     </id> 
     <property name="srDeveloperID" column="sr_developer_id" type="long"></property> 
    </class> 
</hibernate-mapping> 
+0

Можете ли вы поделиться своими классами сущностей? Они помогут нам помочь вам. –

+0

@PrasadKharkar, пожалуйста, посмотрите на редактирование. – RAS

+0

любая помощь ???????? – RAS

ответ

1

Попробуйте это .....

поместите свой запрос как есть (например, выберите .................... id = 812) @ «Ваш запрос»;

{ 
    String sql = "Your Query"; 
    SQLQuery query = session.createSQLQuery(sql); 

    query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP); 
    return query.list(); 
} 
+0

Я уже это сделал. Но я хочу только HQL или критерии. Но спасибо за ответ. +1 с моей стороны. – RAS

1

То, что вы пытаетесь достичь, будет проще, если вы просто сопоставляете связь с Hibernate. Таким образом, вместо:

<property name="srDeveloperID" column="sr_developer_id" type="long"></property> 

сделать это:

<many-to-one name="seniorDeveloper" column="sr_developer_id" class="Developer"/> 

И в Developer.java, вместо:

private long srDeveloperID; 

это:

private Developer seniorDeveloper; 

Тогда вы может написать Ваш запрос как:

select sd3.id, sd2.id, sd1.id, od.id 
from Developer sd3 
left join sd3.seniorDeveloper sd2 
left join sd2.seniorDeveloper sd1 
left join sd1.seniorDeveloper od 
where sd3.id = 8 

Отсюда вы можете получить список Object[] с, где идентификаторы будут в Object[0], Object[1] ... так далее.

+0

Я знаю это решение, но проблема в том, что я не могу изменять POJO, поскольку они используются во многих местах, и это будет иметь огромное влияние на приложение. Поэтому я хочу избежать этого. Но спасибо за ответ. +1 с моей стороны. – RAS

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