play框架从h2数据库中选择

时间:2013-12-12 11:26:21

标签: jpa h2 playframework-2.2

我正在尝试从playframework中的h2 buildin数据库中的表中下载所有记录。 我面临一个错误:

[IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [SELECT * FROM TABLE]] 

方法CODE i class Table:

@Transactional(readOnly=true)
public static Result view() {
    Query query = JPA.em().createQuery("SELECT * FROM TABLE");
    List<Table> downloaded_from_db = query.getResultList();
    System.out.println(downloaded_from_db.getClass());

    return ok(view.render("none"));
}

请帮帮我。我想在简单的视图中看到在控制台中下载的记录。 请给我一些提示或好的教程。

改变我的班级之后就像这样:

@Transactional(readOnly=true)
public static Result view() {
    List<MedicalIncidents> data = JPA.em()
           .createNativeQuery("SELECT * FROM MedicalIncident")
           //.createQuery("Select m from MedicalIncident m")
           .getResultList();
    System.out.println(data);

我觉得它有效,因为我在数据库中的那个表中有两个条目:

但是System.out.println(data)在plaay console中返回:

[[Ljava.lang.Object;@70a0c9be, [Ljava.lang.Object;@4c1d12b6]

但它应该通过模型名称返回此对象,例如:computer-database-jpa:

[models.Computer@214c6fde, models.Computer@63728eb3, models.Computer@75f6bcc6, models.Computer@19e3a7ab, models.Computer@3114d8d4, models.Computer@4fa75f78, models.Computer@756ce822, models.Computer@40fc4c68, models.Computer@73fc612c, models.Computer@3e4fcb31]

所以我觉得它有问题。请帮忙

1 个答案:

答案 0 :(得分:1)

您使用JPQL查询修复了SQL查询。您使用的方法createQuery需要JPQL查询:

SELECT e FROM Entity e

另请注意,在JPQL中没有SELECT *。如果要编写SQL查询,请使用方法em.createNtiveQuery()