diff --git a/querydsl-jpa/pom.xml b/querydsl-jpa/pom.xml
index a1882666b..047cb392f 100644
--- a/querydsl-jpa/pom.xml
+++ b/querydsl-jpa/pom.xml
@@ -16,14 +16,14 @@
jar
- 3.5.1-Final
- 4.0.2.GA
+ 3.6.1.Final
+ 4.1.0.Final
org.hibernate
- hibernate-annotations
+ hibernate-core
${hibernate.version}
@@ -47,7 +47,13 @@
org.hibernate
hibernate-validator
${hibernate.validator.version}
- provided
+ provided
+
+
+ org.slf4j
+ slf4j-api
+
+
@@ -93,7 +99,8 @@
2.3.0-M6
test
-
+
+
hsqldb
hsqldb
diff --git a/querydsl-jpa/src/main/java/com/mysema/query/jpa/AbstractSQLQuery.java b/querydsl-jpa/src/main/java/com/mysema/query/jpa/AbstractSQLQuery.java
index dece1b878..40ec7a9ef 100644
--- a/querydsl-jpa/src/main/java/com/mysema/query/jpa/AbstractSQLQuery.java
+++ b/querydsl-jpa/src/main/java/com/mysema/query/jpa/AbstractSQLQuery.java
@@ -42,7 +42,8 @@ public abstract class AbstractSQLQuery> extends Pr
@Override
public long count() {
- return uniqueResult(Wildcard.countAsInt);
+ Number number = uniqueResult(Wildcard.countAsInt);
+ return number.longValue();
}
@Override
diff --git a/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java b/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java
index 1da5575aa..f7eb85839 100644
--- a/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java
+++ b/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java
@@ -474,4 +474,10 @@ public abstract class AbstractStandardTest {
query().from(show).where(subQuery().from(show2).where(show2.id.ne(show.id)).count().gt(0)).count();
}
+ @Test
+ public void Count(){
+ QShow show = QShow.show;
+ assertTrue(query().from(show).count() > 0);
+ }
+
}
diff --git a/querydsl-jpa/src/test/java/com/mysema/query/ExtDoubleType.java b/querydsl-jpa/src/test/java/com/mysema/query/ExtDoubleType.java
index 4b1026ecc..1f899bf3e 100644
--- a/querydsl-jpa/src/test/java/com/mysema/query/ExtDoubleType.java
+++ b/querydsl-jpa/src/test/java/com/mysema/query/ExtDoubleType.java
@@ -5,17 +5,14 @@
*/
package com.mysema.query;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
import org.hibernate.type.DoubleType;
@SuppressWarnings("serial")
public class ExtDoubleType extends DoubleType{
- @Override
- public void set(PreparedStatement st, Object value, int index) throws SQLException {
- st.setDouble( index, ( (Number) value ).doubleValue() );
- }
-
+// @Override
+// public void set(PreparedStatement st, Object value, int index) throws SQLException {
+// st.setDouble( index, ( (Number) value ).doubleValue() );
+// }
+
}
diff --git a/querydsl-jpa/src/test/java/com/mysema/query/_mysql/MySQLStandardTest.java b/querydsl-jpa/src/test/java/com/mysema/query/_mysql/MySQLStandardTest.java
index 56d780017..1eaf9d12c 100644
--- a/querydsl-jpa/src/test/java/com/mysema/query/_mysql/MySQLStandardTest.java
+++ b/querydsl-jpa/src/test/java/com/mysema/query/_mysql/MySQLStandardTest.java
@@ -5,7 +5,6 @@
*/
package com.mysema.query._mysql;
-import org.junit.Ignore;
import org.junit.runner.RunWith;
import com.mysema.query.AbstractHibernateTest;
@@ -13,7 +12,6 @@ import com.mysema.query.Target;
import com.mysema.testutil.HibernateConfig;
import com.mysema.testutil.HibernateTestRunner;
-@Ignore
@RunWith(HibernateTestRunner.class)
@HibernateConfig("mysql.properties")
public class MySQLStandardTest extends AbstractHibernateTest{
diff --git a/querydsl-jpa/src/test/java/com/mysema/query/jpa/IntegrationTest.java b/querydsl-jpa/src/test/java/com/mysema/query/jpa/IntegrationTest.java
index d65609dae..90e970a1f 100644
--- a/querydsl-jpa/src/test/java/com/mysema/query/jpa/IntegrationTest.java
+++ b/querydsl-jpa/src/test/java/com/mysema/query/jpa/IntegrationTest.java
@@ -42,8 +42,10 @@ public class IntegrationTest extends ParsingTest {
private Session session;
+ @Override
protected QueryHelper query() {
return new QueryHelper() {
+ @Override
public void parse() throws RecognitionException, TokenStreamException {
try {
System.out.println("query : " + toString().replace('\n', ' '));
@@ -65,12 +67,20 @@ public class IntegrationTest extends ParsingTest {
public void GroupBy() throws Exception {
// NOTE : commented out, because HQLSDB doesn't support these queries
}
+
+ @Override
+ @Test
+ public void GroupBy_2() throws Exception {
+ // NOTE : commented out, because HQLSDB doesn't support these queries
+ }
+ @Override
@Test
public void OrderBy() throws Exception {
// NOTE : commented out, because HQLSDB doesn't support these queries
}
+ @Override
@Test
public void DocoExamples910() throws Exception {
// NOTE : commented out, because HQLSDB doesn't support these queries
diff --git a/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPAIntegrationTest.java b/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPAIntegrationTest.java
index 1e7a393ac..4bef4cadf 100644
--- a/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPAIntegrationTest.java
+++ b/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPAIntegrationTest.java
@@ -30,8 +30,10 @@ public class JPAIntegrationTest extends ParsingTest {
private EntityManager entityManager;
+ @Override
protected QueryHelper query() {
return new QueryHelper() {
+ @Override
public void parse() throws RecognitionException, TokenStreamException {
try {
System.out.println("query : " + toString().replace('\n', ' '));
@@ -57,12 +59,20 @@ public class JPAIntegrationTest extends ParsingTest {
public void GroupBy() throws Exception {
// NOTE : commented out, because HQLSDB doesn't support these queries
}
+
+ @Override
+ @Test
+ public void GroupBy_2() throws Exception {
+ // NOTE : commented out, because HQLSDB doesn't support these queries
+ }
+ @Override
@Test
public void OrderBy() throws Exception {
// NOTE : commented out, because HQLSDB doesn't support these queries
}
+ @Override
@Test
public void DocoExamples910() throws Exception {
// NOTE : commented out, because HQLSDB doesn't support these queries
diff --git a/querydsl-jpa/src/test/java/com/mysema/query/jpa/domain/Show.java b/querydsl-jpa/src/test/java/com/mysema/query/jpa/domain/Show.java
index 6ac203620..e07414294 100644
--- a/querydsl-jpa/src/test/java/com/mysema/query/jpa/domain/Show.java
+++ b/querydsl-jpa/src/test/java/com/mysema/query/jpa/domain/Show.java
@@ -10,17 +10,20 @@ import java.util.Map;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.Table;
/**
* The Class Show.
*/
@Entity
+@Table(name="show_")
public class Show {
- @ElementCollection
- public Map acts;
@Id
- public int id;
+ long id;
+
+ @ElementCollection
+ public Map acts;
public Show() {}
diff --git a/querydsl-jpa/src/test/java/com/mysema/query/jpa/hibernate/sql/AbstractSQLTest.java b/querydsl-jpa/src/test/java/com/mysema/query/jpa/hibernate/sql/AbstractSQLTest.java
new file mode 100644
index 000000000..05680cf94
--- /dev/null
+++ b/querydsl-jpa/src/test/java/com/mysema/query/jpa/hibernate/sql/AbstractSQLTest.java
@@ -0,0 +1,169 @@
+package com.mysema.query.jpa.hibernate.sql;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.hibernate.Session;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.mysema.query.SearchResults;
+import com.mysema.query.jpa.domain.Cat;
+import com.mysema.query.jpa.domain.QCat;
+import com.mysema.query.jpa.domain.sql.SAnimal;
+import com.mysema.query.sql.DerbyTemplates;
+import com.mysema.query.sql.SQLTemplates;
+import com.mysema.query.types.ConstructorExpression;
+import com.mysema.query.types.Expression;
+
+public abstract class AbstractSQLTest {
+
+ private final SAnimal cat = new SAnimal("cat");
+
+ private static final SQLTemplates derbyTemplates = new DerbyTemplates();
+
+ private Session session;
+
+ protected HibernateSQLQuery query(){
+ return new HibernateSQLQuery(session, derbyTemplates);
+ }
+
+ public void setSession(Session session) {
+ this.session = session;
+ }
+
+ @Before
+ public void setUp(){
+ session.save(new Cat("Beck",1));
+ session.save(new Cat("Kate",2));
+ session.save(new Cat("Kitty",3));
+ session.save(new Cat("Bobby",4));
+ session.save(new Cat("Harold",5));
+ session.save(new Cat("Tim",6));
+ session.flush();
+ }
+
+ @Test
+ public void In(){
+ assertEquals(6l, query().from(cat).where(cat.dtype.in("C", "CX")).count());
+ }
+
+ @Test
+ public void Count(){
+ assertEquals(6l, query().from(cat).where(cat.dtype.eq("C")).count());
+ }
+
+ @Test
+ public void Count_Via_Unique(){
+ assertEquals(Integer.valueOf(6), query().from(cat).where(cat.dtype.eq("C")).uniqueResult(cat.id.count()));
+ }
+
+ @Test
+ public void CountDistinct(){
+ assertEquals(6l, query().from(cat).where(cat.dtype.eq("C")).countDistinct());
+ }
+
+ @Test
+ public void List(){
+ assertEquals(6, query().from(cat).where(cat.dtype.eq("C")).list(cat.id).size());
+ }
+
+ @Test
+ public void List_With_Limit(){
+ assertEquals(3, query().from(cat).limit(3).list(cat.id).size());
+ }
+
+ @Test
+ public void List_With_Offset(){
+ assertEquals(3, query().from(cat).offset(3).list(cat.id).size());
+ }
+
+ @Test
+ public void List_Limit_And_Offset(){
+ assertEquals(3, query().from(cat).offset(3).limit(3).list(cat.id).size());
+ }
+
+ @Test
+ public void List_Multiple(){
+ print(query().from(cat).where(cat.dtype.eq("C")).list(cat.id, cat.name, cat.bodyweight));
+ }
+
+ @Test
+ public void List_Results(){
+ SearchResults results = query().from(cat).limit(3).orderBy(cat.name.asc()).listResults(cat.name);
+ assertEquals(Arrays.asList("Beck","Bobby","Harold"), results.getResults());
+ assertEquals(6l, results.getTotal());
+ }
+
+ @Test
+ public void Unique_Result(){
+ query().from(cat).limit(1).uniqueResult(cat.id);
+ }
+
+ @Test
+ public void Unique_Result_Multiple(){
+ query().from(cat).limit(1).uniqueResult(new Expression[]{cat.id});
+ }
+
+ @Test
+ public void Single_Result(){
+ query().from(cat).singleResult(cat.id);
+ }
+
+ @Test
+ public void Single_Result_Multiple(){
+ query().from(cat).singleResult(new Expression[]{cat.id});
+ }
+
+ @Test
+ public void EntityQueries(){
+ SAnimal cat = new SAnimal("cat");
+ SAnimal mate = new SAnimal("mate");
+ QCat catEntity = QCat.cat;
+
+ // 1
+ List cats = query().from(cat).orderBy(cat.name.asc()).list(catEntity);
+ assertEquals(6, cats.size());
+ for (Cat c : cats) System.out.println(c.getName());
+
+ // 2
+ cats = query().from(cat)
+ .innerJoin(mate).on(cat.mateId.eq(mate.id))
+ .where(cat.dtype.eq("C"), mate.dtype.eq("C"))
+ .list(catEntity);
+ assertTrue(cats.isEmpty());
+ }
+
+ @Test
+ public void EntityProjections(){
+ SAnimal cat = new SAnimal("cat");
+
+ List cats = query().from(cat).orderBy(cat.name.asc())
+ .list(ConstructorExpression.create(Cat.class, cat.name, cat.id));
+ assertEquals(6, cats.size());
+ for (Cat c : cats) System.out.println(c.getName());
+ }
+
+ @Test
+ public void Wildcard(){
+ SAnimal cat = new SAnimal("cat");
+
+ List