gpt4 book ai didi

java - 这是有效的 EJB-QL 吗?

转载 作者:行者123 更新时间:2023-12-04 06:54:48 26 4
gpt4 key购买 nike

我在 EJB-QL 中有以下构造,几个 EJB 2.1 finder 方法:

SELECT distinct OBJECT(rd) FROM RequestDetail rd, DetailResponse dr 
WHERE dr.updateReqResponseParentID is not null
and dr.updateReqResponseParentID = ?1
and rd.requestDetailID = dr.requestDetailID
and rd.deleted is null and dr.deleted is null

IDEA 的 EJB-QL 检查标志两个对象的使用 FROM RequestDetail rd, DetailResponse dr检查结果显示: Several ranged variable declarations are not supported, use collection member declarations instead (e.g. IN(o.lineItems))
查询本身在 JBoss 4.2 上运行良好(作为返回预期结果)。 IDEA 是不是都湿了,或者查询是否存在有效问题?这种查询的实际首选替代语法是什么?

编辑:感谢所有回答者的帮助,尤其是 Romain。我将此报告为 issue到 JetBrains。

最佳答案

查询很好 - 看起来像是 IDEA 代码检查器问题。
我找不到任何针对它记录的错误。

如果您有付费版本,您可能需要寻求他们的支持。

我确实发现了一个小问题,在 EJB 2.1 的规范中(以及所有其他的),它说对 NULL 使用大写。

11.2.6.10 空比较表达式
在条件表达式中使用比较运算符 IS NULL 的语法如下:
{single_valued_pa​​th_expression | input_parameter }IS [NOT] NULL
空比较表达式测试单值路径表达式或输入参数是否为空值。

SELECT distinct OBJECT(rd) FROM RequestDetail rd, DetailResponse dr 
WHERE dr.updateReqResponseParentID IS NOT NULL
and dr.updateReqResponseParentID = ?1
and rd.requestDetailID = dr.requestDetailID
and rd.deleted IS NULL and dr.deleted IS NULL

这是 EJB 2.1 规范中与您的查询相匹配的部分...

11.2.5.3 范围变量声明
将标识变量声明为范围变量的 EJB QL 语法与 SQL 类似;可选地,它使用 AS 关键字。

range_variable_declaration::= abstract_schema_name [AS] identifier 与实体 bean 相关的对象或值通常通过使用路径表达式的导航获得。但是,导航并未到达所有对象。范围变量声明允许 Bean
提供程序为导航可能无法访问的对象指定“根”。
如果 Bean Provider 想要通过比较实体 bean 抽象模式类型的多个实例来选择值,则在 FROM 子句中需要多个跨越抽象模式类型的标识变量。

以下 finder 方法查询返回数量大于 John Smith 的订单数量的订单。此示例说明了在 FROM 子句中使用两个不同的标识变量,它们都是抽象模式类型 Order。此查询的 SELECT 子句确定返回的是数量大于 John Smith 的订单。
SELECT DISTINCT OBJECT(o1)
FROM Order o1, Order o2
WHERE o1.quantity > o2.quantity AND
o2.customer.lastname = ‘Smith’ AND
o2.customer.firstname= ‘John’

关于java - 这是有效的 EJB-QL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2691645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com