Java 休眠中的意外令牌错误
unexpected token error in hibernate with Java
我有路由实体 class,当我要在 HQL 查询中从 table 中获取所有数据时,只有一列出现错误。
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 中,如果我从查询中删除 "end" 列,则没有错误。但是如果我再次添加结束,如这个问题所示,它会给出一个错误。
下面我将我的错误显示为屏幕截图。
Click here to see my Error
问题是什么?
End 可能是一个保留字。
但是,为什么不只使用 Hibernate 来获得它的价值,并跳过整个手动行映射的事情:
TypedQuery q = em.createQuery("select r from Route r", Route.class);
List<Route> routes = q.getResultList();
带有 em 和类型化查询的示例,因为它给出了更漂亮的结果。 session 和 cast 也可以这样做..
End 是一个保留关键字,因此您要么转义它,要么在 select
中使用 table 别名
"select r.routeID, r.routeNo, r.start, r.end from Route r"
我有路由实体 class,当我要在 HQL 查询中从 table 中获取所有数据时,只有一列出现错误。
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 中,如果我从查询中删除 "end" 列,则没有错误。但是如果我再次添加结束,如这个问题所示,它会给出一个错误。 下面我将我的错误显示为屏幕截图。
Click here to see my Error
问题是什么?
End 可能是一个保留字。
但是,为什么不只使用 Hibernate 来获得它的价值,并跳过整个手动行映射的事情:
TypedQuery q = em.createQuery("select r from Route r", Route.class);
List<Route> routes = q.getResultList();
带有 em 和类型化查询的示例,因为它给出了更漂亮的结果。 session 和 cast 也可以这样做..
End 是一个保留关键字,因此您要么转义它,要么在 select
中使用 table 别名"select r.routeID, r.routeNo, r.start, r.end from Route r"