我在使用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%正常。 有人有任何想法吗?
此致 乌斯曼
答案 0 :(得分:5)
Hibernate查询是用Hibernate Query Language (HQL)编写的,不是用本机SQL编写的。在HQL中重新编写查询或使用native query将SQL与Hibernate一起使用。
Hibernate是一个对象关系映射器。它不会只给你一个结果集。如果需要,请使用JDBC直接使用PgJDBC。
如果您希望将本机域对象作为查询结果,请使用Hibernate with HQL或通过本机查询映射。本机查询很简单,因为你必须明确告诉Hibernate所有结果列如何映射到结果对象。