git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@557 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
joha-asc 2011-04-05 09:52:19 +00:00
parent 217ff92499
commit f6d3039ac9

@ -3,10 +3,20 @@
*/
package se.su.dsv.scipro.data.dao.jpa;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceException;
import javax.persistence.TypedQuery;
import org.springframework.orm.jpa.JpaCallback;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import se.su.dsv.scipro.data.dao.interfaces.ResourceDao;
import se.su.dsv.scipro.data.dataobjects.Resource;
import se.su.dsv.scipro.data.dataobjects.Tag;
/**
* @author Johan Aschan - aschan@dsv.su.se
@ -20,4 +30,19 @@ public class ResourceDaoJPAImp extends AbstractDaoJPAImp<Resource>
public ResourceDaoJPAImp() {
super(Resource.class);
}
@Transactional
public List<Resource> findResourcesByTag(final Tag tag) {
return getJpaTemplate().execute(new JpaCallback<List<Resource>>() {
public List<Resource> doInJpa(EntityManager em) throws PersistenceException {
TypedQuery<Resource> query = em.createQuery("select r FROM Resource r, Tag t WHERE t MEMBER OF r.tagList AND t =:tag", Resource.class);
query.setParameter("tag", tag);
try {
return query.getResultList();
} catch (NoResultException e) {
return null;
}
}
});
}
}