From ba7724c137facd822eeafd6450aff00eaaa08bb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 30 Mar 2009 07:19:00 +0000 Subject: [PATCH] fixed full join usage in querydsl-hql --- .../mysema/query/sql/AbstractSqlQuery.java | 51 ++++++++++++++++--- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSqlQuery.java b/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSqlQuery.java index 49ececf7f..66a0c5d86 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSqlQuery.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSqlQuery.java @@ -10,12 +10,14 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import org.apache.commons.lang.ClassUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.mysema.query.Projectable; import com.mysema.query.QueryBase; import com.mysema.query.grammar.OrderSpecifier; import com.mysema.query.grammar.SqlJoinMeta; @@ -30,7 +32,7 @@ import com.mysema.query.grammar.types.SubQuery; * @author tiwe * @version $Id$ */ -public class AbstractSqlQuery> extends QueryBase{ +public class AbstractSqlQuery> extends QueryBase implements Projectable{ private static final Logger logger = LoggerFactory.getLogger(AbstractSqlQuery.class); @@ -56,10 +58,16 @@ public class AbstractSqlQuery> extends this.ops = ops; } - public List list(Expr expr1, Expr expr2, Expr...rest) throws SQLException{ + public List list(Expr expr1, Expr expr2, Expr...rest){ select(expr1, expr2); select(rest); - return listMultiple(); + try { + return listMultiple(); + } catch (SQLException e) { + String error = "Caught " + e.getClass().getName(); + logger.error(error, e); + throw new RuntimeException(error, e); + } } private List listMultiple() throws SQLException{ @@ -97,9 +105,15 @@ public class AbstractSqlQuery> extends } } - public List list(Expr expr) throws SQLException{ + public List list(Expr expr){ select(expr); - return listSingle(expr); + try { + return listSingle(expr); + } catch (SQLException e) { + String error = "Caught " + e.getClass().getName(); + logger.error(error, e); + throw new RuntimeException(error, e); + } } private List listSingle(Expr expr) throws SQLException{ @@ -205,7 +219,7 @@ public class AbstractSqlQuery> extends return serializer.toString(); } - public long count() throws SQLException { + private long getCount() throws SQLException{ forCountRow = true; String queryString = toString(); logger.debug("query : {}", queryString); @@ -235,6 +249,16 @@ public class AbstractSqlQuery> extends } } } + + public long count(){ + try { + return getCount(); + } catch (SQLException e) { + String error = "Caught " + e.getClass().getName(); + logger.error(error, e); + throw new RuntimeException(error, e); + } + } public SubType limit(int i) { this.limit = i; @@ -264,4 +288,19 @@ public class AbstractSqlQuery> extends } + public Iterator iterate(Expr e1, Expr e2, Expr... rest) { + // TODO : optimize + return list(e1, e2, rest).iterator(); + } + + public Iterator iterate(Expr projection) { + // TODO : optimize + return list(projection).iterator(); + } + + public RT uniqueResult(Expr expr) { + List list = list(expr); + return !list.isEmpty() ? list.get(0) : null; + } + }