我是java和play框架的新手(我正在使用play 1.2.2和本地MySQL5数据库)。我正在尝试查询数据库中的几个表,并在网页上显示表连接结果。
这就是我在各个方面所拥有的:
控制器: -
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:异常评估 属性'disorder_name'for java.util.Arrays $ ArrayList,Reason: groovy.lang.MissingPropertyException:没有这样的属性:disorder_name for class:java.lang.String。
我不确定问题出在哪里。是JPA表连接查询还是视图中出错。
我可以在显示列的视图中做出任何更改吗?
非常感谢。
答案 0 :(得分:1)
默认选择多个列的原生查询会将其返回为Object[]
,因此您的getDisorderGene()
应返回List<Object[]>
,您的模板应如下所示:
#{list items:mutation_list, as:'mutation'}
<tr>
<td>${mutation[0]}</td>
<td>${mutation[1]}</td>
</tr>
#{/list}
答案 1 :(得分:0)
如果你把as 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