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

JPA查询不同于生成的sql查询

施飞驰
2023-03-14
  @Query(value="select rd.contractID as contractID, rd.gicCode as gicCode, count(rd) as ticketNo" 
      + " from RawData rd" 
      + " where rd.contractID is not null and ((rd.contractCostObject is null and rd.domestic = true) or (rd.mirrorSVO is null and rd.domestic = false))"
      + " group by rd.contractID, rd.gicCode")

但是生成的SQL查询是

select
    rawdata0_.contractID as col_0_0_,
    rawdata0_.gicCode as col_1_0_,
    count(rawdata0_.id) as col_2_0_ 
from
    RawData rawdata0_ 
where
    (
        rawdata0_.contractID is not null
    ) 
    and (
        (
            rawdata0_.contractCostObject is null
        ) 
        and rawdata0_.domestic=true 
        or (
            rawdata0_.mirrorSVO is null
        ) 
        and rawdata0_.domestic=false
    ) 
group by
    rawdata0_.contractID ,
    rawdata0_.gicCode

正如您所看到的,括号改变了,我相信两个查询中的条件并不相同。是虫子吗?使用hibernate和spring以及postgresql数据库

共有1个答案

庄宇
2023-03-14

运算符优先于运算符。

  • 条件A和B或C和D

相当于

    null
((rawdata0_.contractCostObject is null) and rawdata0_.domestic=true)
or 
((rawdata0_.mirrorSVO is null) and rawdata0_.domestic=false)
 类似资料:
  • 我有一个与多个代码/标签实体关联的主jpa实体。 当我使用时,我可以看到Hibernate正在创建一个带有多个“left join”的SQL查询,这是我应该手工完成的。 有没有办法做到这一点,怎么做?

  • 我有两个多对多映射的类:用户和主题。我想做的是得到所有的主题谁有提供的用户。有时(这是我最奇怪的部分)它会给我带来这样的错误: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本相对应的手册,以便在第1行'))'附近使用正确的语法 返回的查询是: 我在这里漏掉了什么?完整的

  • 我一直在理解Laravel查询生成器和纯SQL之间的融合。 我有2张桌子: user:包含具有主键的用户 User_Action:这是一个表,其中包含由和动作的组成的PRIMARYs记录。 ex: 使用者 用户操作 我的需要: 现在我想检索一个用户列表,其中包含每个用户的最新操作。因此,我只需要在从到的连接中获取一行,并且这一行必须是具有最新日期时间的一行。我的前任也是如此;我只想获取dateti

  • 我有桌子: 行程:Trip_Num、Trip_Type等 用户的出差历史记录:Username、Trip_Num等 我正在用php做一个项目,需要为一个特定的用户(通过他的用户名)做一个SQL查询--需要知道用户的Trips历史表中Trip_Num的Trip_Type。 附上我的表格: 更新:我需要计算trip_type中的每个值。我的意思是我想看到“步行”-4次,“自行车”-3次,这很好?...

  • 问题内容: 然而,从上述线程中摘录的一个重要观点是: Querydsl和jOOQ似乎是最流行和最成熟的选择,但是需要注意的一件事: 两者都依赖于代码生成的概念, 即为数据库表和字段生成元类。这有助于建立一个漂亮,干净的DSL,但是 在尝试为仅在运行时才知道的数据库创建查询时会遇到问题 。 除了仅使用纯JDBC +字符串串联外,还有什么方法可以在运行时创建查询吗? 我正在寻找的是一个Web应用程序,

  • 我有两个实体AAA和BBB,如下所示 以及BBB实体作为 现在使用spring数据JPA本机查询,我需要一个如下的查询(使用JPARepository) 当执行时,它会给出以下异常 这里的bbb详细信息是键(BBBType)值(子实体)对的映射。如何根据数据jpa本机查询中的BBBType值查询映射的子实体?