/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.common.query.jpa;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.TemporalType;
import javax.persistence.TypedQuery;
public class HqlQueryTemplate implements Parameterable,QueryTemplateable{
private TypedQuery<Object> query;
private EntityManager em;
public HqlQueryTemplate(final EntityManager entityManager,final String hql) {
this.em = entityManager;
query= entityManager.createQuery(hql,Object.class);
}
@Override
public HqlQueryTemplate setParameter(String name, Object value) {
query.setParameter(name, value);
return this;
}
@Override
public HqlQueryTemplate setParameter(int position, Object value) {
query.setParameter(position, value);
return this;
}
@Override
public HqlQueryTemplate setParameter(String name, Date date, TemporalType type) {
query.setParameter(name, date,type);
return this;
}
@Override
public HqlQueryTemplate setParameter(int position, Date date, TemporalType type) {
query.setParameter(position, date, type);
return this;
}
@Override
public HqlQueryTemplate setParameter(String name, Calendar calendar,TemporalType type) {
query.setParameter(name, calendar,type);
return this;
}
@Override
public HqlQueryTemplate setParameter(int position, Calendar calendar,TemporalType type) {
query.setParameter(position, calendar, type);
return this;
}
@Override
public HqlQueryTemplate setFirstResult(int startPosition){
query.setFirstResult(startPosition);
return this;
}
@Override
public HqlQueryTemplate setMaxResults(int maxResults){
query.setMaxResults(maxResults);
return this;
}
@Override
public Object getResultSingle(){
return query.getSingleResult();
}
@Override
public List<Object> getResultList(){
return query.getResultList();
}
@Override
public <T> T execute(QueryTemplateCallback<T> callback){
return callback.doInQuery(em);
}
}