如何在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) ";
我正在使用以下查询来获取数据数据库
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) ";