Skip to content

Commit

Permalink
Fixed many-to-one relation in DAO class
Browse files Browse the repository at this point in the history
  • Loading branch information
vikulin committed Sep 30, 2023
1 parent 510974e commit 073cbea
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions src/main/java/model/hibernate/UserRoleHibernateDAO.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/**
Expand Down Expand Up @@ -30,16 +37,30 @@ public Collection<UserRole> findById(Long id) {
* Find UserRole by userId
*/
public Collection<UserRole> findByUserId(Long userId) {
//TODO Fix me
return super.findByFieldName("id", userId);
HibernateCriteriaBuilder cb = getSession().getCriteriaBuilder();
CriteriaQuery<UserRole> cq = cb.createQuery(UserRole.class);

Root<UserRole> userRoleRoot = cq.from(UserRole.class);
Join<UserRole, User> userJoin = userRoleRoot.join("user");

cq.where(cb.equal(userJoin.get("id"), userId));

return getSession().createQuery(cq).getResultList();
}

/**
* Find UserRole by roleId
*/
public Collection<UserRole> findByRoleId(Long roleId) {
//TODO Fix me
return super.findByFieldName("id", roleId);
HibernateCriteriaBuilder cb = getSession().getCriteriaBuilder();
CriteriaQuery<UserRole> cq = cb.createQuery(UserRole.class);

Root<UserRole> userRoleRoot = cq.from(UserRole.class);
Join<UserRole, Role> userJoin = userRoleRoot.join("role");

cq.where(cb.equal(userJoin.get("id"), roleId));

return getSession().createQuery(cq).getResultList();
}

}

0 comments on commit 073cbea

Please sign in to comment.