仅查找不是RecurringOrderEntity实例的实体的jpql语法是什么?
将实体类型表达式与
TYPE
操作员。类似这样的事情(不确定您想要的确切查询,但您得到了这个想法):
SELECT o
FROM OrderEntity o
WHERE TYPE(o) <> RecurringOrderEntity
AND o.cancellationDate is null
AND o.maxOccurrences = o.occurrence
JPA 2.0规范的相关章节如下:
4.6.17.4实体类型表达式
不能使用实体类型表达式
限制查询多态性。这个
类型运算符返回准确的类型
争论的焦点。
实体类型的语法
表达式如下:
entity_type_expression ::=
type_discriminator |
entity_type_literal |
input_parameter
type_discriminator ::=
TYPE(identification_variable |
single_valued_object_path_expression |
input_parameter )
安
实体\类型\文字
是
由实体名称指定。
使用Java实体的Java类
作为输入参数指定
实体类型。
示例:
SELECT e
FROM Employee e
WHERE TYPE(e) IN (Exempt, Contractor)
SELECT e
FROM Employee e
WHERE TYPE(e) IN (:empType1, :empType2)
SELECT e
FROM Employee e
WHERE TYPE(e) IN :empTypes
SELECT TYPE(e)
FROM Employee e
WHERE TYPE(e) <> Exempt