Java hibernate查询组合3个表以获取对应于一个表的对象

Java hibernate查询组合3个表以获取对应于一个表的对象,java,hibernate,Java,Hibernate,我有3个名为role、permission和role\u permission的表及其对应的POJO public class RoleTO { private int roleId; private String roleName; private int applicationId; } , , 现在我在dao类中有了一个方法 public List<PermissionTO> getPermissions(int applicationId

我有3个名为role、permission和role\u permission的表及其对应的POJO

    public class RoleTO 
{

    private int roleId;
    private String roleName;
    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();

}
public List getPermissions(int applicationId,字符串roleName)抛出HibernateeException
{
会话会话=getCurrentSession();
String hql=“选择P FROM PermissionTO P,Role R,其中P.applicationId=R.applicationId和P.applicationId=:applicationId和P.roleName=:roleName”;
Query=session.createQuery(hql);
setParameter(“applicationId”,applicationId);
setParameter(“roleName”,roleName);
返回query.list();
}
但是我需要连接这三个表,这样我就可以获得permission类中给定应用程序Id和链接这三个表的角色名的所有权限


有人能帮忙吗?我也有类似的问题,但找不到解决办法

但在您的查询中,我发现您应该使用一些约束,使用RoleIdApplicationIdRoleTO连接到RolePermissinTo,然后使用此结果获得每个给定角色的相应PermissionTO列表。
我不擅长查询,我想这应该是逻辑

从permission选择p到p,角色R 其中P.applicationId=R.applicationId 和R.applicationId=:applicationId 和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将值设置为参数


List=cr.List();

你说的“找不到解决方案”是什么意思?“实际上,这与我使用的查询几乎相同,在我的情况下,这不起作用。我需要的是一份许可证清单。我有roleName和applicationId。使用这些值,我需要RoleTO提供的roleId,然后使用该ID,我需要RolePermissionTO提供的角色权限,并返回相应的PermissionTOs。。。。。。
public class PermissionTO 
{

    private int permissionId;
    private String permission;
    private String permissionDesc;
    private int applicationId;
}
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();

}