我正在尝试从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]
所以我觉得它有问题。请帮忙
答案 0 :(得分:1)
您使用JPQL查询修复了SQL查询。您使用的方法createQuery
需要JPQL查询:
SELECT e FROM Entity e
另请注意,在JPQL中没有SELECT *
。如果要编写SQL查询,请使用方法em.createNtiveQuery()
。