如何在hql中执行左连接以获取数据

时间:2015-06-09 07:48:18

标签: hql

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

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中的数据我想从参数中获取数据。

如何使用hql实现这一点?

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

1 个答案:

答案 0 :(得分:1)

你可能想要这样的东西。您还需要将关联加入用户。请注意,您应该使用参数和组之间的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) ";