当前位置: 首页 > 知识库问答 >
问题:

嵌套逻辑运算符的JPA NamedQueries问题

蒲昀
2023-03-14
SELECT * FROM customer c
WHERE (c.is_customer = true) OR (c.is_customer = false AND c.activation_date >  CURRENT_DATE + INTERVAL '3.5 years');
@NamedQuery(name = CustomerBE.NAMED_QUERY,
                query = "SELECT c FROM CustomerBE c "
                       + "WHERE (c.isCustomer= true) OR (c.isCustomer= false AND c.activationDate > CURRENT_DATE + INTERVAL '3.5 years')"
)
Exception Description: Syntax error parsing [SELECT c FROM CustomerBE c WHERE (c.isCustomer= true) OR (c.isCustomer= false AND c.activationDate > CURRENT_DATE + INTERVAL '3.5 years']. 
[41, 297] The expression is not a valid conditional expression.
[297, 298] The query contains a malformed ending

共有1个答案

戚研
2023-03-14

您可能需要在WHERE子句前加一个空格,否则您的字符串将不是有效的JPQL:

“从CustomerBE cWHERE(c.iscustomer=true)O中选择c...”

我不确定这是不是你报告的问题,但这也是一个需要修复的问题。

 类似资料:
  • JavaScript 中有三个逻辑运算符:||(或),&&(与),!(非)。 虽然它们被称为“逻辑”运算符,但这些运算符却可以被应用于任意类型的值,而不仅仅是布尔值。它们的结果也同样可以是任意类型。 让我们来详细看一下。 ||(或) 两个竖线符号表示“或”运算符: result = a || b; 在传统的编程中,逻辑或仅能够操作布尔值。如果参与运算的任意一个参数为 true,返回的结果就为 tr

  • 主要内容:逻辑非运算(NOT 或者 !),逻辑与运算符(AND 或者 &&),逻辑或运算符(OR 或者 ||),异或运算(XOR 运算符)逻辑运算符又称为布尔运算符,用来确定表达式的真和假。 MySQL中支持的逻辑运算符如下表所示。 MySQL 中的逻辑运算符 运算符 作用 NOT 或者 ! 逻辑非 AND 或者 && 逻辑与 OR 和 || 逻辑或 XOR 逻辑异或   下面分别讨论 MySQL 逻辑运算符的使用方法。 逻辑非运算(NOT 或者 !) 和 都是逻辑非运算符,返回和操作数相反的结

  • 主要内容:打脸某些 Python 教程,逻辑运算符的本质高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。 Python 也有类似的逻辑运算,请看下表: 表 1 Python 逻辑运算符及功能 逻辑运算符 含义 基本格式 说明 and 逻辑与运算,等价于数学中的“且” a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。 or 逻辑或运算,等价于数学

  • 逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。 逻辑运算符是对布尔型变量进行运算,其结果也是布尔型,具体如表 1 所示。 表 1 逻辑运算符的用法、含义及实例 运算符 用法 含义 说明 实例 结果 && a&&b 短路与 ab 全为 true 时,计算结果为 true,否则为 false。 2>1&&3<4

  • 问题内容: 我记得有一阵子关于逻辑运算符的内容,在的情况下,使用要比(或反之亦然)更好。 当我回到项目中时,我只需要在项目中使用它,但是我不记得建议使用哪个运算符,或者它是否正确。 哪个更好?为什么? 问题答案: 没有“更好的”,但是更常见的是。它们具有不同的优先级, 并且可以像通常期望的那样工作。 另请参阅:逻辑运算符( 以下示例从此处获取 ):

  • 前面只介绍了courter<=10、total>1000 和 number!=sentinel Value 之类的简单条件(simplecondition)。我们用关系运算符>、<、>=、<=和相等运算符==、!=表示这些条件。每个判断只测试一个条件。要在每个判断中测试多个条件,可以在不同语句中或嵌套if(if/else)结构中进行这些测试。 C++提供的逻辑运算符(logical operato