如何在hql中执行left join来获取数据

How to perform left join in hql to fetch data

我正在使用以下查询来获取数据数据库

String hql = "from Parameters s "
             +"left join fetch s.userValues as uv "
             + "where s.groupId=:gid "
             +"and uv.user.id=:uid  " ;

以上是我的 hql 查询,我正在从 Parameter 和 userValues 获取数据。 如果用户在 userValues 中有任何值,则此查询工作正常。 当 userValues 中没有为用户保存的值时,此查询不会获取任何值。

我的问题是 userValues 中是否应该有数据我想从 Parameters 中获取数据。

如何使用 hql 实现这个?

我只想在 hql 中进行左连接以获得第一个 table 个值。

您可能想要这样的东西。您还需要离开加入协会给用户。请注意,您应该使用 Parameter 和 Group 之间的 Hibernate 映射,如下所示。但是您可能需要使用分组来删除重复的结果。

String hql = "from Parameters s "
    + "join s.group g "
    + "left join fetch s.userValues uv "
    + "left join uv.user u "    
    + "where g.id=:gid "
    + "and (u.id=:uid or u is null) ";