java - 从 Hibernate 的三个表中获取部分对象

标签 java hibernate hql

我有三个表 User、UserRole(加入表)和 Role。我需要从角色表中获取基于条件的名称。我有一个 sql 查询正在处理这种情况,但想尝试使用条件。

Select firstname, lastname from user, userrole, role where user.id=userrole.userid and userrole.roleid=role.id and role.name='James';

这将返回部分对象的名字和姓氏,我稍后可以将其用作全名。

我如何使用 HQL 或 Criteria 做同样的事情?有人可以帮助我吗?

在我的用户实体中

@ManyToMany(fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)    
@JoinTable(
        name = "userrole",
        joinColumns = { @JoinColumn(name = "userid") },
        inverseJoinColumns = @JoinColumn(name = "roleid")
)
public Set<Role> getRoles() {
    return roles;
}

最佳答案

使用下面给出的代码。

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from user user where user.name=:username").setParameter("username", "James");
List<User> list = query.list();

关于java - 从 Hibernate 的三个表中获取部分对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29181210/

相关文章:

java - cassandra快照时出现打开文件过多的情况

java - 有没有办法在 jfreechart 中更新并显示鼠标指针旁边的 x y ?

java - 如何在不依赖数据库的情况下将 JUnit 测试应用于 Insert()、update()、delete() 方法(使用 Mockito)

spring - 添加@Autowire时为"No Session found for current thread"

hadoop - 使用变量替换 (-d|--define) 的 Hive 参数因字符串参数而失败

Java Nashorn 将 java 类(不是实例)暴露给 javascript

java - Hibernate 抛出 ConcurrentModificationException

mysql - Hibernate 中最简单的一对多映射案例在 MySQL 中不起作用

mysql - hibernate ,mysql

java - HQL 中 STR() 函数的错误使用