實體關係
Role (1) ——< Permission (多)
Permission 表包含外鍵 role_id 關聯 Role。
HQL 查詢語句
FROM Permission p WHERE p.role.id = :roleId
完整 DAO 方法示例
public List<Permission> findPermissionsByRoleId(Long roleId) {
String hql = "FROM Permission p WHERE p.role.id = :roleId";
Query query = sessionFactory.getCurrentSession().createQuery(hql);
query.setParameter("roleId", roleId);
return query.list();
}
等效 SQL(參考)
SELECT * FROM permission WHERE role_id = ?
關鍵點
- HQL 面向對象,直接導航
p.role.id,無需手寫 JOIN。
- 參數綁定
:roleId 防止注入,自動處理類型轉換。
- 若映射為雙向關聯,
Role 端可用 @OneToMany(mappedBy="role") 維護集合。