package net.dontdrinkandroot.example.angularrestspringsecurity.dao.accesstoken;
import net.dontdrinkandroot.example.angularrestspringsecurity.dao.JpaDao;
import net.dontdrinkandroot.example.angularrestspringsecurity.entity.AccessToken;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.NoResultException;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
/**
* @author Philip Washington Sorst <philip@sorst.net>
*/
public class JpaAccessTokenDao extends JpaDao<AccessToken, Long> implements AccessTokenDao
{
public JpaAccessTokenDao()
{
super(AccessToken.class);
}
@Override
@Transactional(readOnly = true, noRollbackFor = NoResultException.class)
public AccessToken findByToken(String accessTokenString)
{
CriteriaBuilder builder = this.getEntityManager().getCriteriaBuilder();
CriteriaQuery<AccessToken> query = builder.createQuery(this.entityClass);
Root<AccessToken> root = query.from(this.entityClass);
query.where(builder.equal(root.get("token"), accessTokenString));
try {
return this.getEntityManager().createQuery(query).getSingleResult();
} catch (NoResultException e) {
return null;
}
}
}