2011-09-20 128 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