Playframework - 查询和显示多表连接的结果
问题描述:
我是一个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表连接查询一起使用,还是在视图中出现错误。
在显示列的视图中是否有任何更改?
非常感谢。
,默认情况下选择多列
答
本机查询将它们作为Object[]
,因此你应该getDisorderGene()
返回List<Object[]>
,和你的模板应如下所示:
#{list items:mutation_list, as:'mutation'}
<tr>
<td>${mutation[0]}</td>
<td>${mutation[1]}</td>
</tr>
#{/list}
答
如果你把作为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
非常感谢axtavt - 它的工作! – Curly