package org.iatoki.judgels.raguel.forum.member; import org.iatoki.judgels.play.model.AbstractHibernateDao; import play.db.jpa.JPA; import javax.inject.Singleton; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import java.util.List; @Singleton public final class ForumMemberHibernateDao extends AbstractHibernateDao<Long, ForumMemberModel> implements ForumMemberDao { public ForumMemberHibernateDao() { super(ForumMemberModel.class); } @Override public boolean existsInForumByMemberJid(String forumJid, String memberJid) { CriteriaBuilder cb = JPA.em().getCriteriaBuilder(); CriteriaQuery<Long> query = cb.createQuery(Long.class); Root<ForumMemberModel> root = query.from(ForumMemberModel.class); query.select(cb.count(root)).where(cb.and(cb.equal(root.get(ForumMemberModel_.forumJid), forumJid), cb.equal(root.get(ForumMemberModel_.userJid), memberJid))); return JPA.em().createQuery(query).getSingleResult() != 0; } @Override public ForumMemberModel findInForumByMemberJid(String forumJid, String memberJid) { CriteriaBuilder cb = JPA.em().getCriteriaBuilder(); CriteriaQuery<ForumMemberModel> query = cb.createQuery(ForumMemberModel.class); Root<ForumMemberModel> root = query.from(ForumMemberModel.class); query.where(cb.and(cb.equal(root.get(ForumMemberModel_.forumJid), forumJid), cb.equal(root.get(ForumMemberModel_.userJid), memberJid))); return JPA.em().createQuery(query).getSingleResult(); } @Override public List<String> getForumJidsByJid(String memberJid) { CriteriaBuilder cb = JPA.em().getCriteriaBuilder(); CriteriaQuery<String> query = cb.createQuery(String.class); Root<ForumMemberModel> root = query.from(ForumMemberModel.class); query.select(root.get(ForumMemberModel_.forumJid)).where(cb.equal(root.get(ForumMemberModel_.userJid), memberJid)); return JPA.em().createQuery(query).getResultList(); } }