Java hibernate查询组合3个表以获取对应于一个表的对象
我有3个名为role、permission和role\u permission的表及其对应的POJOJava 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
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和链接这三个表的角色名的所有权限
有人能帮忙吗?我也有类似的问题,但找不到解决办法 但在您的查询中,我发现您应该使用一些约束,使用RoleId和ApplicationId将RoleTO连接到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();
}