当前位置: 首页 > 知识库问答 >
问题:

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

蒋波光
2023-03-14

我面临的问题是在java中使用hibernate为postgres表执行以下查询。

该查询由使用内部连接从3个表中检索数据组成。

QryJourney=“选择journey.id、journey.operatingday、journey.linename、journey.scheduledeparturestopname、journeydetail.stopname、journeydetail.latitude、journeydetail.longitude FROM journey left join journey_journeydetail ON journey.id=journey_journeydetailails_id=旅程细节。我在哪里旅行。id='155815228'按journeydetail排序。“预定到达”;

一旦它执行,以下异常发生。

异常在线程"main"org.hibernate.hql.internal.ast.QuerySynTaxExcture:意外令牌:在第1行附近,列268[SELECTjourney.id,journey.operatingday,journey.linename,journey.scheduledeparture,journey.scheduledeparturestopname,journeydetail.stopname,journeydetail.latitude,journeydetail.longitudede.db.journeyTracker.model.journey左加入journey_journeydetailjourney.id=journey_journeydetail.journey_id左加入旅程详细信息ON<--plhd--13_id=journeydetail.id其中journey.id='155815228'journeydetail.schedulearrival]

在postgres上,当在其SQL窗格上执行时,Tis查询可以100%正常工作。有人知道吗?

问候乌斯曼

共有1个答案

苏嘉志
2023-03-14

Hibernate查询是用Hibernate查询语言(HQL)而不是本机SQL编写的。在HQL中重新表述查询,或者使用本机查询将SQL与Hibernate结合使用。

Hibernate是一个对象关系映射程序。它不仅会给你一个结果集。如果需要,可以直接使用JDBC,使用PgJDBC。

如果希望本机域对象作为查询结果,请将Hibernate与HQL一起使用,或通过本机查询映射。原生查询比较烦躁,因为必须明确地告诉Hibernate所有结果列如何映射到结果对象。

 类似资料:
  • 问题内容: 我正在使用Hibernate / JPA执行本地PostGIS查询。这些查询的问题在于它们需要的参数不是经典的X =“值”形式。 例如,以下几行崩溃 但是,以下查询有效: (但是它很容易出现SQL注入…) 有谁知道如何在这种情况下使用? 问题答案: 未为本机查询定义使用命名参数。根据JPA规范(第3.6.3节“ 命名参数”): 命名参数遵循第4.4.1节中定义的标识符规则。命名参数的使

  • 当我在GSI上查询时,我对Amazon DynamoDBv2的Amazon DynamoDBAsync.query异步请求的实现返回代码400“查询条件错过了关键模式元素......”。 我尝试使用DynamoDBAttribute名称(“myAttr”)和GSI的实际索引名称(“idx\u global\u myAttr”),并收到相同的错误代码。这与Docker的图片“amazon/dynam

  • 我有一个带有左连接的SELECT语句,连接的表是子查询。Oracle无法识别第二个子查询中第一个子查询的别名。它适用于DB2,但不适用于Oracle。我如何实现它或重写我的查询? Oracle错误消息:ORA-00904:“B”。“C3”:无效标识符

  • 问题内容: 这可能是因为我累了,或者我是Postgres的新手。但是,我试图在函数中使用临时表,而postgres抱怨“关系不存在”。但是,如果我接受函数的主体并执行它,就可以正常工作。下面是我尝试创建的函数类型的示例。请记住,我已经剥离了所有有趣的内容,以至于几乎没有显示我的问题的最低限度。 我收到的投诉是关于插入声明的。实际的投诉是: postgres是否不支持函数中的临时表?还是有一些语法方

  • 问题内容: 我创建的查询之一存在一个奇怪的“问题”。给定下一个查询: phpMyAdmin一直在引发有关没有名为“ LatestBookableTimestamp”的列的错误,即使我有一个由子查询检索的列,也就是该别名。我也尝试过使用tableprefix选择每一列。第八,这没有用。最终,我通过表别名选择了所有列,并为表指定了别名。一切都没有运气。 有人可以告诉我我在做什么错吗?我什至搜索了一些资

  • 我使用Lambda(Python)查询我的DynamoDB数据库。我正在使用boto3库,我能够进行“等效”查询: 这个脚本的工作原理是: 但是,当我将查询表达式更改为以下内容时: 我得到一个错误: 根据该[1]资源,“gt”是Key()的方法。有人知道这个库是否已经更新,或者除了“eq”之外还有什么其他方法可用吗? [1] http://boto3.readthedocs.io/en/lates