2011-12-23 74 views
0

我有3個表,我沒有任何關聯,但表中的主鍵用作其他兩個表中的列來檢索數據。我是hibernate的新手,但我還沒有學會創建關聯,但我需要從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(); 

將它們轉換,但沒有奏效。

有沒有必要將此查詢返回的對象(Lang.Object)轉換爲映射的Projects對象?謝謝你的幫助。

+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());   
    } 
相關問題