HQL Query to check if size of collection is 0 or empty

前端 未结 3 988
无人共我
无人共我 2020-12-03 06:46

I try to generate a HQL query that include user with a empty appoinment collections(mapped by OneToMany):

SELECT u FROM User u JOIN u.appointments uas WHERE          


        
相关标签:
3条回答
  • 2020-12-03 07:28
    // Hibernate query:
    const string hql = "from User u where u.Id = 101 and size(u.Appointments) = 0";
    
    0 讨论(0)
  • 2020-12-03 07:30

    Have you taken a look at your generated SQL? Your method works fine here:

    // Hibernate query:
    const string hql = "from User u where u.Id = 101 and size(u.Appointments) = 0";
    
    
    // Generates this working SQL:
    select user0_.Id    as Id20_,
           user0_.Name as Name2_20_
    from   User user0_
    where  user0_.Id = 101
           and (select count(appointment1_.Id_Solicitud)
                from   Appointment appointment1_
                where  user0_.Id = appointment1_.Id_User) = 0
    
    0 讨论(0)
  • 2020-12-03 07:35

    Using IS EMPTY should work (I would favor a JPQL syntax):

    SELECT u FROM User u WHERE u.status = 1 AND u.appointments IS EMPTY
    

    If it doesn't, please show the generated SQL.

    References

    • Hibernate Core Reference Guide
      • 14.10. Expressions
    • JPA 1.0 specification
      • Section 4.6.11 "Empty Collection Comparison Expressions"
    0 讨论(0)
提交回复
热议问题