当前位置: 首页 > 面试题库 >

HQL:使用ManyToMany进行休眠查询

葛骏
2023-03-14
问题内容

我对HQL查询和hibernate有疑问。

我有一个用户类和一个角色类。用户可以具有许多角色。所以我有一个像这样的ManyToMany关系:

在用户类别中:

@ManyToMany(fetch = FetchType.LAZY)
@oinTable(name = "PORTAIL_USERROLE", joinColumns = { @JoinColumn(name = "USERID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "ROLE", nullable = false, updatable = false) })
public Set<Portailrole> getPortailroles() {
    return this.portailroles;
}

在角色类中:

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "PORTAIL_USERROLE", joinColumns = { @JoinColumn(name = "ROLE", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "USERID", nullable = false, updatable = false) })
public Set<Portailuser> getPortailusers() {
    return this.portailusers;
}

此映射创建了存储关系的第三个表(PORTAIL_USERROLE)。像这样一切正常。当我有一个用户时,我将检索角色。

但是,我的问题是:在HQL查询中,如何获得具有特定角色的所有用户?任何类都代表PORTAIL_USERROLE表,因此我不知道如何进行HQL查询。


问题答案:

应该这样做:

from Portailuser u join u.portailroles r where r.name=:roleName


 类似资料:
  • 问题内容: 细节 来自应用程序的HQL查询: 查询返回300万条记录,而对于分页,我们仅设置了其中的50条记录,分页页面的运行速度非常慢,因为每次刷新时,我们都调用查询来获取300万条记录,而其中只有50条记录。 我的主要问题是 HQL是始终运行并命中数据库还是运行命中会话或内存以查找数据,如果它每次都运行时命中数据库并获取结果集,那么从性能的角度来看,这是非常合适的,什么是改进的最佳解决方案它?

  • 问题内容: 我不确定如何描述这个问题,所以我认为举个例子是问我问题的最好方法: 我有两个表具有多对多关系: 驾驶员许可证<->许可证类别 LicenceClass是诸如“汽车”,“摩托车”和“中型刚性”之类的东西。 使用Hibernate Criteria,如何找到同时具有“汽车”和“摩托车” LicenceClasses的所有许可证? 2008年12月11日更新我发现可以使用自定义ResultT

  • 问题内容: 我想“试运行” Hibernate HQL查询。那就是我想知道Hibernate将从给定的HQL查询中执行哪些实际的SQL查询,而无需实际针对实际数据库执行HQL查询。 我可以访问表的hibernate映射,HQL查询字符串,数据库的方言。如果需要,我也可以访问数据库。 现在,如何找到Hibernate可以从HQL生成的所有SQL查询,而无需实际对任何数据库执行查询?有什么工具吗? 请

  • 问题内容: 我想“试运行” Hibernate HQL查询。那就是我想知道Hibernate从给定的HQL查询中执行什么实际的SQL查询,而无需实际对真实数据库执行HQL查询。 我可以访问表的休眠映射,HQL查询字符串,数据库的方言。如果需要,我也可以访问数据库。 现在,如何找出Hibernate可以从HQL生成的所有SQL查询,而无需实际对任何数据库执行查询呢?有什么工具吗? 请注意,可以从一个

  • 问题内容: 如何在Hibernate中编写此SQL查询?我想使用Hibernate创建查询,而不是创建数据库。 我在SQLServer2008中创建了实体类, 我试图以多种方式构建有效的选择查询,但仍然无法正常工作。 实体有问题吗? 问题答案: 仅当实体之间存在关联时才能使用联接。您的Employee实体不应将名称为,类型为的字段映射到列。它应该与Team实体具有ManyToOne关联,并映射为J

  • 问题内容: 如何将休眠参数设置为“ null”?例: 就我而言,状态字符串可以为null。我已对此进行调试,然后休眠,然后生成这样的SQL字符串/查询..... 但这在MYSQL中不起作用,因为正确的SQL语句必须为“ ”(Mysql无法理解status = null并对此求值为false,因此根据我已阅读的mysql文档,查询将不会返回任何记录…) 我的问题: 为什么不将空字符串正确地转换为“