QuerySyntaxException:Hibernate无法识别java中的postgres查询语法

时间:2012-07-20 13:06:03

标签: java sql hibernate postgresql

我在使用hibernate for postgres表时遇到了在java中执行以下查询的问题。

该查询用于使用内部联接从3个表中检索数据。

查询:

QryJourney =" SELECT journey.id,journey.operatingday,journey.linename,journey.scheduledeparture,journey.scheduledeparturestopname,journeydetail.stopname,journeydetail.latitude,journeydetail.longitude FROM journey left join journey_journeydetail ON journey.id = journey_journeydetail.journey_id left JOIN journeydetail ON journey_journeydetail.journeydetails_id = journeydetail.id WHERE journey.id =' 155815228' ORDER BY journeydetail.schedulearrival";

一旦执行,就会发生异常。

例外:

线程中的异常" main" org.hibernate.hql.internal.ast.QuerySyntaxException:意外标记:ON第1行,第268行[SELECT journey.id,journey.operatingday,journey.linename,journey.scheduledeparture,journey.scheduledeparturestopname,journeydetail.stopname,journeydetail。 latitude,journeydetail.longitude FROM de.db.journeyTracker.model.journey left join journey_journeydetail ON journey.id = journey_journeydetail.journey_id left JOIN journeydetail ON journey_journeydetail.journeydetails_id = journeydetail.id WHERE journey.id =' 155815228' ORDER BY journeydetail.schedulearrival]

在SQL窗格上执行时,Tis查询在postgres上工作100%正常。 有人有任何想法吗?

此致 乌斯曼

1 个答案:

答案 0 :(得分:5)

Hibernate查询是用Hibernate Query Language (HQL)编写的,不是用本机SQL编写的。在HQL中重新编写查询或使用native query将SQL与Hibernate一起使用。

Hibernate是一个对象关系映射器。它不会只给你一个结果集。如果需要,请使用JDBC直接使用PgJDBC

如果您希望将本机域对象作为查询结果,请使用Hibernate with HQL或通过本机查询映射。本机查询很简单,因为你必须明确告诉Hibernate所有结果列如何映射到结果对象。