package com.oceaneconsulting.tanaguru.dao.impl;
import javax.persistence.Query;
import org.tanaguru.sdk.entity.dao.jpa.AbstractJPADAO;
import org.springframework.stereotype.Repository;
import com.oceaneconsulting.tanaguru.dao.WsUserDao;
import com.oceaneconsulting.tanaguru.entity.WsRole;
import com.oceaneconsulting.tanaguru.entity.WsUser;
import com.oceaneconsulting.tanaguru.entity.impl.WsUserImpl;
/**
* Classe de la DAO des utilisateurs
* @author msobahi
*
*/
@Repository("userDao")
public class WsUserDaoImpl extends AbstractJPADAO<WsUser, Long> implements WsUserDao {
/**
* Option de la mise en cache de la requete
*/
private static final String CACHEABLE_OPTION = "org.hibernate.cacheable";
@Override
protected Class<? extends WsUser> getEntityClass() {
return WsUserImpl.class;
}
@Override
public WsRole getUserRole(WsUser user) {
Query query = entityManager.createQuery("SELECT usr.role FROM " + getEntityClass().getName() + " usr "
+ " WHERE usr = :user");
query.setParameter("user", user);
query.setHint(CACHEABLE_OPTION, "true");
return (WsRole) query.getSingleResult();
}
public WsUser getUser(String login){
Query query = entityManager.createQuery("SELECT usr FROM " + getEntityClass().getName() + " usr "
+ " WHERE usr.email = :login");
query.setParameter("login", login);
query.setHint(CACHEABLE_OPTION, "true");
return (WsUser) query.getSingleResult();
}
}