diff --git a/src/main/java/model/hibernate/UserRoleHibernateDAO.java b/src/main/java/model/hibernate/UserRoleHibernateDAO.java index 17012e2..d1a84d9 100644 --- a/src/main/java/model/hibernate/UserRoleHibernateDAO.java +++ b/src/main/java/model/hibernate/UserRoleHibernateDAO.java @@ -2,7 +2,14 @@ import java.util.Collection; +import org.hibernate.query.criteria.HibernateCriteriaBuilder; + +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Join; +import jakarta.persistence.criteria.Root; import model.UserRoleDAO; +import model.pojo.Role; +import model.pojo.User; import model.pojo.UserRole; /** @@ -30,16 +37,30 @@ public Collection findById(Long id) { * Find UserRole by userId */ public Collection findByUserId(Long userId) { - //TODO Fix me - return super.findByFieldName("id", userId); + HibernateCriteriaBuilder cb = getSession().getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(UserRole.class); + + Root userRoleRoot = cq.from(UserRole.class); + Join userJoin = userRoleRoot.join("user"); + + cq.where(cb.equal(userJoin.get("id"), userId)); + + return getSession().createQuery(cq).getResultList(); } /** * Find UserRole by roleId */ public Collection findByRoleId(Long roleId) { - //TODO Fix me - return super.findByFieldName("id", roleId); + HibernateCriteriaBuilder cb = getSession().getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(UserRole.class); + + Root userRoleRoot = cq.from(UserRole.class); + Join userJoin = userRoleRoot.join("role"); + + cq.where(cb.equal(userJoin.get("id"), roleId)); + + return getSession().createQuery(cq).getResultList(); } }