DBModelFacade.java 1.45 KB
package fi.codecrew.moya.facade;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import fi.codecrew.moya.model.DBModel;
import fi.codecrew.moya.model.DBModel_;
import fi.codecrew.moya.utilities.jpa.GenericFacade;

@Stateless
@LocalBean
public class DBModelFacade extends GenericFacade<DBModel> {

	public DBModelFacade() {
		super(DBModel.class);
	}

	public void updateModel(String updateModelSQL) {
		Query q = getEm().createNativeQuery(updateModelSQL);
		q.executeUpdate();
	}

	public DBModel findRevisionById(Integer id) {
		CriteriaBuilder cb = getEm().getCriteriaBuilder();
		CriteriaQuery<DBModel> cq = cb.createQuery(DBModel.class);
		Root<DBModel> root = cq.from(DBModel.class);
		cq.where(cb.equal(root.get(DBModel_.revision), id));
		return getSingleNullableResult(getEm().createQuery(cq));
	}

	public DBModel findLastRevision() {
		CriteriaBuilder cb = getEm().getCriteriaBuilder();
		CriteriaQuery<DBModel> cq = cb.createQuery(DBModel.class);
		Root<DBModel> root = cq.from(DBModel.class);
		cq.orderBy(cb.desc(root.get(DBModel_.revision)));
		return getSingleNullableResult(getEm().createQuery(cq));
	}

	@PersistenceContext
	private EntityManager em;

	protected EntityManager getEm() {
		return em;
	}
}