问题标签 [jpql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - JPQL IN 子句:Java 数组(或列表、集合...)?
我想从我们的数据库中加载所有将文本标记设置为任何少量但任意数量的值的对象。在 SQL 中执行此操作的合乎逻辑的方法是构建一个“IN”子句。JPQL 允许使用 IN,但它似乎要求我直接将每个参数指定为 IN(如“in (:in1, :in2, :in3)”)。
有没有办法指定一个数组,或者一个列表(或其他容器)应该展开为 IN 子句的值?
java - JPQL avg 聚合函数是否适用于整数?
我有一个名为Surgery的 JPA 2 实体。它有一个名为transfusionUnits的成员,它是一个Integer。
数据库中有两个条目。执行此 JPQL 语句:
产生预期的结果:
以下语句产生5的预期答案:
我希望以下语句的答案是2.5,但它会返回2.0。
如果我在不同的(浮动)成员上执行语句,结果是正确的。关于为什么会发生这种情况的任何想法?我需要在 JPQL 中进行某种类型的演员吗?这甚至可能吗?当然,我在这里遗漏了一些微不足道的东西。
java - 如何编写此 JPQL 查询?
假设我有 5 张桌子,
现在我只想检索那些 blogMember 实际评论过的博客和帖子。简而言之,我该如何编写这个简单的旧 SQL?
如您所见,一切都是内连接,因此只会检索用户对某个博客的某些帖子发表评论的那一行。所以,假设他/她加入了 3 个 id 为 1,2,3 的博客(用户加入的博客在 tblBlogMembers 中),但用户只在博客 2 中发表了评论(比如 BlogPostId = 1)。所以该行将被检索,而 1,3 不会因为它是内部联接。如何在JPQL中编写这种查询?
在 JPQL 中,我们只能编写简单的查询,例如:
其中 objUser 使用以下方式提供:
因此,一旦我们得到用户加入的所有博客(这里 blogId 代表一个博客对象),我们就可以循环并做所有花哨的事情。但我不想陷入这种循环业务并在我的 Java 代码中编写所有这些东西。相反,我想把它留给数据库引擎去做。那么,如何将上面的纯 SQL 写入 JPQL 呢?JPQL 查询将返回什么类型的对象?因为我只从所有表中选择几个字段。我应该将结果类型转换到哪个类?
我想我正确地发布了我的要求,如果我不清楚,请告诉我。
更新:根据帕斯卡的回答,我尝试为上述 SQL 查询编写 JPQL 查询。我面临一个小问题。此查询有效,但不完整:
我想将其修改为:
上面的查询不起作用。我怎么解决这个问题?
java - jpql中是否有等效的视图?
如果我有一个复杂的 where 子句,它在许多查询之间仅略有不同,那么在 SQL 中,我将基于大部分 where 子句创建一个视图,然后多次查询该视图。兼顾性能和可维护性。
我在 jpql 中没有看到类似的东西。
我是我还是 jpql 规范。遗漏了什么?
干杯,菲尔
java - Java:JPQL 日期函数将时间段添加到另一个日期
在上面的 JPQL 语句中, SomeClass 有一个 memebr dateAttr
,它是 ajava.util.Date
并且有一个@Temporal(javax.persistence.TemporalType.DATE)
注解。
我需要一种方法来做这(CURRENT_DATE + 1 MONTH)
件事-在当前状态下显然是错误的-但找不到带有 JPQL 日期函数的文档。
任何人都可以向我指出记录 JPQL 日期函数(以及如何执行此特定查询)的文档的方向吗?
java - Java:JPQL 选择语句
select x from X x where x.a.id = :a_id
--> 始终选择 0 个对象
为什么上面的 JPQL 语句不起作用,但下面的语句起作用?
select a from A a where a.id = :a_id
--> a_obj
select x from X x where x.a = :a_obj
--> 始终选择正确的对象数量
两个查询在执行过程中都没有抛出异常,但获得的结果数量不同。
谢谢
更新
我使用连接尝试了以下查询:
select x from X x, x.a a where x.a.id = :a_id
--> TopLink 意外令牌异常
这:
select x from X x JOIN x.a a where a.id = :a_id
->始终选择正确的对象数量
通过后一个查询,我已经解决了手头的初始问题。但是,现在我有两个应该可以工作的查询,但由于某种原因没有。
select x from X x where x.a.id = :a_id
--> 始终选择 0 个对象
select x from X x, x.a a where x.a.id = :a_id
--> 意外令牌的 TopLink 异常
有没有其他人遇到过类似的行为?
java - JPQL 检查多对多关系
只是一个简单的问题:
存在与同一实体的多对多关系连接的实体(例如用户)(例如,此关系描述“友谊”并且它是对称的)。
就执行时间而言,检查用户 A 是否是用户 B 的“朋友”的最快方法是什么?“愚蠢”的方式是获取整个列表,然后检查用户是否存在,但这显然是开销。
我正在使用 JPA 2
这是示例代码:
hibernate - JPA日期算术?
是否可以使用 JPA/Hibernate 执行日期算术?例如,我有一个带有 java.util.Date 字段的实体,指示该行的创建时间。是否可以使用 JPQL 执行查询并在该字段上包含日期算术?例如,我可以执行 COUNT(*) 行,然后在该字段中按月份分组吗?我是否可以执行其他功能,例如仅从查询中的该字段返回月份或年份?
hibernate - HQL 到 JPQL 问题
以下 HQL 查询到 EclipseLink 兼容 JPQL 的翻译是什么:
(这只是从此处获取的 HQL 示例查询的变体)
在 EclipseLink 中,IN 函数似乎没有采用属性路径:
我可能可以通过另一个连接来解决这个问题,但是有更紧凑的东西吗?
hibernate - JPQL 中的索引元素访问
是否可以像在HQL中一样在 JPQL 中进行索引元素访问:
我在 JPA 2 规范中找不到相关内容,
我在这里以EclipseLink JPA为目标,所以如果您想出一个 EclipseLink 解决方案,那也没关系,尽管首选 JPQL 标准解决方案。