This commit is contained in:
Timo Westkämper 2009-11-16 09:49:07 +00:00
parent 440188be06
commit afe7eb1c2d
2 changed files with 82 additions and 80 deletions

View File

@ -35,15 +35,38 @@ public abstract class AbstractHibernateQuery<SubType extends AbstractHibernateQu
private static final Logger logger = LoggerFactory.getLogger(HibernateQuery.class);
private final Session session;
private int fetchSize = 0;
private final Session session;
public AbstractHibernateQuery(QueryMetadata md, Session session, HQLTemplates patterns) {
super(md, patterns);
this.session = session;
}
public long count() {
return uniqueResult(Expr.countAll());
}
public long count(Expr<?> expr) {
return uniqueResult(expr.count());
}
private Query createQuery(Expr<?> expr){
addToProjection(expr);
String queryString = toQueryString();
return createQuery(queryString, getMetadata().getModifiers());
}
private Query createQuery(Expr<?> expr1, Expr<?> expr2, Expr<?>... rest){
addToProjection(expr1, expr2);
addToProjection(rest);
String queryString = toQueryString();
logQuery(queryString);
return createQuery(queryString, getMetadata().getModifiers());
}
private Query createQuery(String queryString, @Nullable QueryModifiers modifiers) {
Query query = session.createQuery(queryString);
HibernateUtil.setConstants(query, getConstants());
@ -60,44 +83,27 @@ public abstract class AbstractHibernateQuery<SubType extends AbstractHibernateQu
}
return query;
}
@SuppressWarnings("unchecked")
public Iterator<Object[]> iterate(Expr<?> e1, Expr<?> e2, Expr<?>... rest) {
return createQuery(e1, e2, rest).iterate();
}
@SuppressWarnings("unchecked")
public <RT> List<RT> list(Expr<RT> expr) {
addToProjection(expr);
String queryString = toQueryString();
Query query = createQuery(queryString, getMetadata().getModifiers());
return query.list();
public <RT> Iterator<RT> iterate(Expr<RT> projection) {
return createQuery(projection).iterate();
}
@SuppressWarnings("unchecked")
public List<Object[]> list(Expr<?> expr1, Expr<?> expr2, Expr<?>... rest) {
addToProjection(expr1, expr2);
addToProjection(rest);
String queryString = toQueryString();
logQuery(queryString);
Query query = createQuery(queryString, getMetadata().getModifiers());
return query.list();
}
public ScrollableResults scroll(ScrollMode mode, Expr<?> expr) {
addToProjection(expr);
String queryString = toQueryString();
logQuery(queryString);
Query query = createQuery(queryString, getMetadata().getModifiers());
return query.scroll(mode);
return createQuery(expr1, expr2, rest).list();
}
public ScrollableResults scroll(ScrollMode mode, Expr<?> expr1, Expr<?> expr2, Expr<?>... rest) {
addToProjection(expr1, expr2);
addToProjection(rest);
String queryString = toQueryString();
logQuery(queryString);
Query query = createQuery(queryString, getMetadata().getModifiers());
return query.scroll(mode);
@SuppressWarnings("unchecked")
public <RT> List<RT> list(Expr<RT> expr) {
return createQuery(expr).list();
}
public <RT> SearchResults<RT> listResults(Expr<RT> expr) {
addToProjection(expr);
Query query = createQuery(toCountRowsString(), null);
@ -115,12 +121,22 @@ public abstract class AbstractHibernateQuery<SubType extends AbstractHibernateQu
}
}
public long count() {
return uniqueResult(Expr.countAll());
protected void logQuery(String queryString){
if (logger.isDebugEnabled()){
logger.debug(queryString.replace('\n', ' '));
}
}
public long count(Expr<?> expr) {
return uniqueResult(expr.count());
public ScrollableResults scroll(ScrollMode mode, Expr<?> expr) {
return createQuery(expr).scroll(mode);
}
public ScrollableResults scroll(ScrollMode mode, Expr<?> expr1, Expr<?> expr2, Expr<?>... rest) {
return createQuery(expr1, expr2, rest).scroll(mode);
}
public void setFetchSize(int fetchSize) {
this.fetchSize = fetchSize;
}
@SuppressWarnings("unchecked")
@ -131,26 +147,6 @@ public abstract class AbstractHibernateQuery<SubType extends AbstractHibernateQu
Query query = createQuery(queryString, QueryModifiers.limit(1));
return (RT) query.uniqueResult();
}
public Iterator<Object[]> iterate(Expr<?> e1, Expr<?> e2, Expr<?>... rest) {
// TODO : optimize
return list(e1, e2, rest).iterator();
}
public <RT> Iterator<RT> iterate(Expr<RT> projection) {
// TODO : optimize
return list(projection).iterator();
}
protected void logQuery(String queryString){
if (logger.isDebugEnabled()){
logger.debug(queryString.replace('\n', ' '));
}
}
public void setFetchSize(int fetchSize) {
this.fetchSize = fetchSize;
}

View File

@ -40,6 +40,25 @@ public abstract class AbstractJPAQuery<SubType extends AbstractJPAQuery<SubType>
this.em = em;
}
public long count() {
return uniqueResult(Expr.countAll());
}
private Query createQuery(Expr<?> expr){
addToProjection(expr);
String queryString = toString();
logQuery(queryString);
return createQuery(queryString, getMetadata().getModifiers());
}
private Query createQuery(Expr<?> expr1, Expr<?> expr2, Expr<?>... rest){
addToProjection(expr1, expr2);
addToProjection(rest);
String queryString = toString();
logQuery(queryString);
return createQuery(queryString, getMetadata().getModifiers());
}
private Query createQuery(String queryString, @Nullable QueryModifiers modifiers) {
Query query = em.createQuery(queryString);
JPAUtil.setConstants(query, getConstants());
@ -54,23 +73,22 @@ public abstract class AbstractJPAQuery<SubType extends AbstractJPAQuery<SubType>
return query;
}
@SuppressWarnings("unchecked")
public <RT> List<RT> list(Expr<RT> expr) {
addToProjection(expr);
String queryString = toString();
logQuery(queryString);
Query query = createQuery(queryString, getMetadata().getModifiers());
return query.getResultList();
public Iterator<Object[]> iterate(Expr<?> first, Expr<?> second, Expr<?>... rest) {
return list(first, second, rest).iterator();
}
public <RT> Iterator<RT> iterate(Expr<RT> projection) {
return list(projection).iterator();
}
@SuppressWarnings("unchecked")
public List<Object[]> list(Expr<?> expr1, Expr<?> expr2, Expr<?>... rest) {
addToProjection(expr1, expr2);
addToProjection(rest);
String queryString = toString();
logQuery(queryString);
Query query = createQuery(queryString, getMetadata().getModifiers());
return query.getResultList();
public List<Object[]> list(Expr<?> expr1, Expr<?> expr2, Expr<?>... rest) {
return createQuery(expr1, expr2, rest).getResultList();
}
@SuppressWarnings("unchecked")
public <RT> List<RT> list(Expr<RT> expr) {
return createQuery(expr).getResultList();
}
public <RT> SearchResults<RT> listResults(Expr<RT> expr) {
@ -89,18 +107,6 @@ public abstract class AbstractJPAQuery<SubType extends AbstractJPAQuery<SubType>
return SearchResults.emptyResults();
}
}
public long count() {
return uniqueResult(Expr.countAll());
}
public <RT> Iterator<RT> iterate(Expr<RT> projection) {
return list(projection).iterator();
}
public Iterator<Object[]> iterate(Expr<?> first, Expr<?> second, Expr<?>... rest) {
return list(first, second, rest).iterator();
}
protected void logQuery(String queryString){
if (logger.isDebugEnabled()){