[英]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.