繁体   English   中英

Toplink IN子查询

[英]Toplink IN subquery

我有2个对象通过oneToMany关系关联(“一个模型可以有很多事件”)。

我正在尝试在ejbql中进行子查询,以查找一个事件的模型,如下所示:

SELECT model 
FROM RegModelValue model 
WHERE :event IN (model.events) 

....但是toplink不会识别模型别名,并告诉我“内部异常:行1:129:意外令牌:模型”

有任何想法吗 ?

非常感谢!

我认为顺序是错误的, :event不能在IN之前。

尝试这个 :

    SELECT model 
    FROM RegModelValue model 
    JOIN model.events events
    WHERE events.id = :event

JPQL查询的语法应为:

SELECT model 
FROM RegModelValue model 
WHERE model.events IN (:event)

以下是JPA 1.0规范的相关部分:

4.6.8在表达式中

在条件表达式中使用比较运算符[NOT] IN的语法如下:

 in_expression ::= state_field_path_expression [NOT] IN ( in_item {, in_item}* | subquery) in_item ::= literal | input_parameter 

state_field_path_expression必须具有字符串,数字或枚举值。 文字和/或input_parameter值必须像相同抽象模式类型在类型state_field_path_expression的。 (请参阅第4.12节)。

子查询的结果必须类似于state_field_path_expression类型中的相同抽象架构类型。 第4.6.15节“子查询”中讨论了子查询。

例如:

o.country IN ('UK', 'US', 'France')UK为true,在Peru为false,等效于表达式(o.country = 'UK') OR (o.country = 'US') OR (o.country = ' France')

o.country NOT IN ('UK', 'US', 'France')UK为false,在Peru为true,等效于表达式NOT ((o.country = 'UK') OR (o.country = 'US') OR (o.country = 'France'))

逗号分隔列表中必须至少有一个元素定义了IN表达式的值集。

如果IN或NOT IN表达式中的state_field_path_expression的值为NULL或未知,则该表达式的值未知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM