2011-09-20 125 views
2

我是一個java和play框架的新手(我在本地MySQL5數據庫中使用play 1.2.2)。我試圖查詢數據庫中的幾個表,並在網頁上顯示錶連接結果。Playframework - 查詢和顯示多表連接的結果

這是我在不同的位:

控制器: -

public static void index() { 
     List<Mutation> mutation_list= Mutation.getDisorderGene(); 
     render(mutation_list);  
    } 

型號: -

public class Mutation extends Model { 

    public static List<Mutation> getDisorderGene() { 
    EntityManager entityManager = play.db.jpa.JPA.em(); 
    List<Mutation> muts = entityManager.createNativeQuery("select disorder_name, gene_name from Disorder,Mutation where Disorder.id = Mutation.disorder_id order by disorder_name, gene_name").getResultList(); 
    return muts; 
    } 

查看: -

#{list items:mutation_list, as:'mutation'} 
        <tr> 
         <td>${mutation.disorder_name}</td> 
         <td>${mutation.gene_name}</td> 
        </tr> 
#{/list}    

這就是我得到的錯誤信息!在模板/app/views/Stu/index.html發生

模板執行錯誤

執行錯誤。 引發的異常是MissingPropertyException:異常評估 java.util.Arrays屬性'disorder_name'$ ArrayList,原因: groovy.lang.MissingPropertyException:對於類java.lang.String,沒有此類屬性:disorder_name 。

我不確定問題出在哪裏。它是與JPA表連接查詢一起使用,還是在視圖中出現錯誤。

在顯示列的視圖中是否有任何更改?

非常感謝。

,默認情況下選擇多列

回答

1

本機查詢將它們作爲Object[],因此你應該getDisorderGene()返回List<Object[]>,和你的模板應如下所示:

#{list items:mutation_list, as:'mutation'} 
        <tr> 
         <td>${mutation[0]}</td> 
         <td>${mutation[1]}</td> 
        </tr> 
#{/list} 
+0

非常感謝axtavt - 它的工作! – Curly

0

如果你把作爲clausule .. 。

select disorder_name as NameMyPropertyModelClass, gene_name as NameMyPropertyModelClass 
from Disorder,Mutation 
where Disorder.id = Mutation.disorder_id order by disorder_name, gene_name