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"