2011-12-23 2 views
0

У меня есть 3 таблицы, и среди них нет ассоциаций, но первичный ключ в таблицах используется как столбец в двух других таблицах для извлечения данных. Я новичок в спящем режиме, и я еще не научился создавать ассоциации, но мне нужно запросить данные из трех таблиц и вернуть тип сопоставленного объекта. Я использую запрос SQL, чтобы сделать это:Hibernate createSQLQuery

Query q = session.createSQLQuery("select p.projectid, p.projecttitle, p.projectdescription from projects p join accounts a on p.accountid = a. accountid join addresses ad on ad.accountid = a.accountid where ad.zipcode=" + zipcode); 

Я пытался использовать эту строку:

List<Projects> projects = (List<Projects>)q.List(); 

, чтобы преобразовать их, но это не сработало.

Есть ли anyqay для преобразования объектов (Lang.Object), возвращаемых этим запросом, в объект проектов с отображением? Спасибо за вашу помощь.

+1

вы видели [addEntity] (http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querysql.html)? Это может помочь здесь, возможно ... – aishwarya

+0

Кстати, вы должны легко смоделировать эту ассоциацию и обработать с помощью критериев. У проектов есть учетная запись, у учетных записей есть адрес, адрес имеет почтовый индекс. – aishwarya

+0

«но это не сработало» - это вызвало исключение? Или это просто как ничто? – Aaron

ответ

0
List projects = q.List(); 

    for (Iterator iterator = projects.iterator(); iterator.hasNext();){ 

     Object[] row = (Object[]) iterator.next(); 
     Projects project = new Project(); 
     project.setName(row[0].toString()); 

     System.out.println("Project name: " + project.getName());   
    } 

или вы можете также сделать

List projects = q.List(); 

    for (Iterator iterator = projects.iterator(); iterator.hasNext();){ 

     Object[] row = (Object[]) iterator.next(); 
     Projects project = new Project(row[0].toString()); 
     System.out.println("Project name: " + project.getName());   
    } 
Смежные вопросы