java - hibernate查询组合3张表来获取一张表对应的对象

标签 java hibernate

我有3个名为role、permission和role_permission的表及其相应的pojo

    public class RoleTO 
{

    private int roleId;
    private String roleName;
    private int applicationId;
}

  public class RolePermissionsTO 
{
    private int role_permissionId;
    private int roleId;
    private int permissionId;
}

public class PermissionTO 
{

    private int permissionId;
    private String permission;
    private String permissionDesc;
    private int applicationId;
}

现在我的 dao 类中有一个方法

public List<PermissionTO> getPermissions(int applicationId, String roleName)throws HibernateException
{
     Session session = getCurrentSession();

    String hql = "SELECT P FROM PermissionTO P,Role R where P.applicationId=R.applicationId and P.applicationId=:applicationId and P.roleName=:roleName";
    Query query = session.createQuery(hql);
    query.setParameter("applicationId",applicationId);
    query.setParameter("roleName",roleName);

    return query.list();

}

但是我需要连接这三个表,以便获得给定应用程序 ID 的权限类中的所有权限以及链接这三个表的角色名称。

谁能帮忙

最佳答案

从权限选择 P,角色 R 其中 P.applicationId=R.applicationId AND R.applicationId=:applicationId AND R.roleName=:roleName";

或者

Criteria cr = session.createCriteria(PermissionTO.class, "permissionTo"); cr.createAlias("permissionTo.permissionId", "rolePermissionsTo");//默认内连接 cr.createAlias("rolePermissionsTo.roleId", "roleTo"); cr.add(Restrictions.eq("roleTo.applicationId", applicationId));//applicationId 设置值到参数 cr.add(Restrictions.eq("roleTo.roleName", roleName));//roleName 将值设置为参数

列表列表 = cr.list();

关于java - hibernate查询组合3张表来获取一张表对应的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28597746/

相关文章:

java - 如何在Spring 3.2.x中修改PathMatch?

java - 扫描仪定界符无法按预期使用输入文件 (Java)

java - 使用命名查询时 ManyToMany NOT NULL 检查约束

java - 与 DBCP 连接池和线程的混淆

java - 如何找出抽象列表中的对象?

java - JasperReport 异常 : FontExtensionsRegistry. ensureFontExtensions : Loading font extensions from fonts. xml

java - 使用 hibernate 和 gilead for gwt 添加到实体类中保存的列表时出现 LazyInitializationException

java - 如何使用 hibernate JPA 注释映射嵌套集合 Map<Key,List<Values>>?

hibernate - Tomcat catalina.out 文件增长非常快!如何防止 Hibernate 的 INFO 和 DEBUG 语句被添加到 catalina.out 文件中?

java - 实体持久化时如何实现回调?