[hibernate-issues] [Hibernate-JIRA] Created: (HHH-7229) hql converts to wrong sql: brackets trouble

Anton P. (JIRA) noreply at atlassian.com
Sat Apr 7 03:39:48 EDT 2012


hql converts to wrong sql: brackets trouble
-------------------------------------------

                 Key: HHH-7229
                 URL: https://hibernate.onjira.com/browse/HHH-7229
             Project: Hibernate ORM
          Issue Type: Bug
          Components: query-hql
    Affects Versions: 4.1.0
         Environment: Mac 10.7.3
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11D50b)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)

hibernate+jpa+spring

org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final
postgresql 8.4-701.jdbc4 


            Reporter: Anton P.


Original:
   /* select
        count(*) 
    from
        PrivateMessage model   
    where
        (
            (
                model.senderDelete=:w3 
                and model.owner=:w4 
            ) 
            or (
                model.recipientDelete=:w6 
                and model.to=:w7 
            ) 
        ) 
        and (
            lower(model.message) like :w9 
            or (
                lower(model.owner.name) like :w11 
                or lower(model.to.name) like :w12 
            ) 
        )  */ select
            count(*) as col_0_0_ 
        from
            PRIVATE_MESSAGES privatemes0_ 
        inner join
            MESSAGES privatemes0_1_ 
                on privatemes0_.id=privatemes0_1_.id cross 
        join
            USERS user1_ cross 
        join
            USERS user2_ 
        where
            privatemes0_1_.OWNER=user1_.id 
            and privatemes0_.TO_USER_ID=user2_.id 
            and (
                privatemes0_.SENDER_DELETE=? 
                and privatemes0_1_.OWNER=? 
                or privatemes0_.RECIPIENT_DELETE=? 
                and privatemes0_.TO_USER_ID=?
            ) 
            and (
                lower(privatemes0_1_.MSG) like ? 
                or lower(user1_.NAME) like ? 
                or lower(user2_.NAME) like ?
            ) limit ?


But SHOULD be:

 select
            count(*) as col_0_0_ 
        from
            PRIVATE_MESSAGES privatemes0_ 
        inner join
            MESSAGES privatemes0_1_ 
                on privatemes0_.id=privatemes0_1_.id cross 
        join
            USERS user1_ cross 
        join
            USERS user2_ 
        where
            privatemes0_1_.OWNER=user1_.id 
            and privatemes0_.TO_USER_ID=user2_.id 
            and (
                (privatemes0_.SENDER_DELETE=? 
                and privatemes0_1_.OWNER=?) 
                (or privatemes0_.RECIPIENT_DELETE=?
                and privatemes0_.TO_USER_ID=?)
            ) 
            and (
                lower(privatemes0_1_.MSG) like ? 
                or lower(user1_.NAME) like ? 
                or lower(user2_.NAME) like ?
            ) limit ?

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list