我在用户和角色之间有很多关系。例如
public class User {
@Id
private Integer id;
@ManyToMany
@JoinTable(name = "APP_USER_ROLE",
joinColumns = { @JoinColumn(name = "USER_ID") },
inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") })
private List<Role> roles = new ArrayList<Role>();
}
@Entity
public class Role {
@Id
private Integer id;
@ManyToMany(mappedBy = "roles")
private List<User> users = new ArrayList<User>();
}
我的要求是获取系统中所有具有其角色的用户。当使用HQL使用我的查询是
select u, u.roles from User u
但是,这会触发具有相应角色的每个用户的查询。如果有100个用户,它将触发100个查询。但是在SQL中,我可以使用以下查询来实现
select u.id,
u.name, m.roleId, r.name FROM User u left outer join UserRole m ON u.id = m.userId
inner join Roles r ON m.roleId = r.id
order by u.id;
我正在为用户进行左外部联接,因为有些用户没有关联的角色。我宁愿不使用本机SQL,因为它有其自身的缺点。有人可以帮我映射相应的HQL或JPQL查询吗?
试试这个查询
select u from User u left join fetch u.roles
场景中,我正在处理用户和方案应用程序。网页用于创建和更新用户。同样,可以创建和更新scheme页面。现在使用hibernate,我与user to scheme表有多对多关系。我已经创建了USER SCHEME和USER\u SCHEME表并保存了它们。 该方案用户数量巨大。现在我有一个条件,如果一个用户更新了他的详细信息,如果他有10个以上的证书,那么在schema网页中,他必须以star aw
我目前在数据库中的一对一/多对一映射时遇到问题。我希望我的图书表具有与“出版商”、“流派”、“评级”和“状态”表的@ManyToOne映射。 这是我的Book实体类的外观: 例如,我的Publisher实体类(类型、评级和状态类完全相同): 唯一的区别是类型、评级和状态的书籍字段,f. e: 这就是我的堆栈跟踪的样子: 更新的堆栈跟踪:
问题内容: 有三个表:,并且,医院能提供的医疗服务和语言服务。因此,存在两个多对多关系。 简单ERD 现在,我想使用和搜索医院数据。 DaoImpl: 而且,如果我想从三个表中按邮政编码,医疗类型和语言进行搜索,那么如何编写一个jsql。 警告: 错误:org.hibernate.hql.internal.ast.ErrorCounter- 预期加入的路径!希望加入的路径!在org.hiberna
如果在中只有一组,这将非常好地工作。ASSESSMENT_COMMENT只有两列: 它将完美地代表一对多的关系。 现在问题来了: 那么,1)这是Hibernate中已知的bug吗?2)有办法解决这个问题吗?我可以强制Hibernate创建两个映射表,每个映射表一个吗?请记住,我不能更改类来引用(业务逻辑需求)
问题内容: 我有实体类A和C。它们正在映射表tblA和tblC,并且它们之间具有多对多关系,而tblB可以在它们之间进行映射。tblB包含A_ID,C_ID和SetDate,最后一个是它的设置日期,因此是关系的属性。我的问题是,如何最好地映射此属性?目前,它们尚未映射,如下所示: A: C: 我应该如何从中获取tblB.SetDate? 干杯 问题答案: 据我所知, 不可能 以这种方式映射它,您必
问题内容: 我想了解Doctrine和Symfony2的多对多关系是如何工作的。 我已经重新创建了官方文档(goo.gl/GYcVE0)中显示的示例,并且我有两个实体类: 用户 和 组 ,如下所示。 如果我更新数据库,则会得到以下MySQL模式: 问题在于,在Symfony2中,我需要 实体 来生成查询,在这种情况下,我没有与表相关联的实体,因为该表是由框架自动创建的。 那么,如何检索与此关系表有