我有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/