我有Route Entity类,当我要在HQL查询中从该表中获取所有数据时,我只得到一个列的错误。
Route.class: -
@Entity
public class Route {
@Id
private long routeID;
private String start;
private String end;
private String routeNo;
private double startLat;
private double startLon;
private double endLat;
private double endLon;
}
DataFetch.Class: -
public class DataFetch{
public void FetchRoutes(){
Query q = session.createQuery("select routeID,routeNo,start,end from Route ");
List<Object[]> routes = (List<Object[]>) q.list();
for (Object[] r : routes) {
System.out.println("id: "+r[0]);
System.out.println("No: "+r[1]);
System.out.println("start: "+r[2]);
System.out.println("end: "+r[3]);
}
}
}
在DataFetch.class中,如果我从查询q中删除“end”列,则没有错误。但如果我再次添加结束这个问题,它将给出一个错误。 下面我将我的错误显示为屏幕截图。
有什么问题?
答案 0 :(得分:2)
结束可能是一个保留字。
但是,为什么不只是使用Hibernate来获取它的价值,并跳过整个手动行映射的事情:
TypedQuery q = em.createQuery("select r from Route r", Route.class);
List<Route> routes = q.getResultList();
使用em和类型查询的示例,因为它提供了更漂亮的结果。会话和演员也可以这样做..
答案 1 :(得分:2)
End是保留关键字,因此您可以将其转义或使用select
中的表别名"select r.routeID, r.routeNo, r.start, r.end from Route r"