Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save andygoossens/5eed865ccfe84857f7e99ddb2dfb5790 to your computer and use it in GitHub Desktop.
Save andygoossens/5eed865ccfe84857f7e99ddb2dfb5790 to your computer and use it in GitHub Desktop.
Proof of parameter issue with HibernateQuery and Hibernate 5.3
Index: querydsl-examples/querydsl-example-jpa-guice/src/main/resources/META-INF/persistence.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- querydsl-examples/querydsl-example-jpa-guice/src/main/resources/META-INF/persistence.xml (revision 2bf234caf78549813a1e0f44d9c30ecc5ef734e3)
+++ querydsl-examples/querydsl-example-jpa-guice/src/main/resources/META-INF/persistence.xml (date 1529698078000)
@@ -14,7 +14,8 @@
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.flushMode" value="FLUSH_AUTO" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
- <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory" />
+ <!-- does not work with Hibernate 5.3 -->
+ <!--<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory" />-->
</properties>
</persistence-unit>
</persistence>
\ No newline at end of file
Index: pom.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- pom.xml (revision 2bf234caf78549813a1e0f44d9c30ecc5ef734e3)
+++ pom.xml (date 1529698326000)
@@ -590,7 +590,10 @@
<profile>
<id>hibernate5</id>
<properties>
- <hibernate.version>5.0.5.Final</hibernate.version>
+ <!-- Works -->
+ <hibernate.version>5.2.17.Final</hibernate.version>
+ <!-- Fails: java.lang.IllegalArgumentException: Could not locate named parameter [1], expecting one of [] -->
+ <!--<hibernate.version>5.3.1.Final</hibernate.version>-->
<hibernate.validator.version>5.2.2.Final</hibernate.validator.version>
</properties>
</profile>
Index: querydsl-examples/querydsl-example-jpa-guice/src/main/java/com/querydsl/example/jpa/repository/AbstractRepository.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- querydsl-examples/querydsl-example-jpa-guice/src/main/java/com/querydsl/example/jpa/repository/AbstractRepository.java (revision 2bf234caf78549813a1e0f44d9c30ecc5ef734e3)
+++ querydsl-examples/querydsl-example-jpa-guice/src/main/java/com/querydsl/example/jpa/repository/AbstractRepository.java (date 1529698584000)
@@ -1,15 +1,17 @@
package com.querydsl.example.jpa.repository;
+import javax.inject.Inject;
+import javax.inject.Provider;
+import javax.persistence.EntityManager;
+
import com.querydsl.core.types.EntityPath;
import com.querydsl.core.types.Expression;
import com.querydsl.example.jpa.model.Identifiable;
import com.querydsl.jpa.HQLTemplates;
+import com.querydsl.jpa.hibernate.HibernateQuery;
import com.querydsl.jpa.impl.JPADeleteClause;
import com.querydsl.jpa.impl.JPAQuery;
-
-import javax.inject.Inject;
-import javax.inject.Provider;
-import javax.persistence.EntityManager;
+import org.hibernate.Session;
public abstract class AbstractRepository<T extends Identifiable> implements Repository<T, Long> {
@@ -24,6 +26,14 @@
return new JPAQuery<>(em.get(), HQLTemplates.DEFAULT).select(select);
}
+ protected <T> HibernateQuery<T> selectFromHibernateQuery(EntityPath<T> entity) {
+ return selectHibernateQuery(entity).from(entity);
+ }
+
+ protected <T> HibernateQuery<T> selectHibernateQuery(Expression<T> select) {
+ return new HibernateQuery<>(em.get().unwrap(Session.class)).select(select);
+ }
+
protected JPADeleteClause delete(EntityPath<?> entity) {
return new JPADeleteClause(em.get(), entity, HQLTemplates.DEFAULT);
}
Index: querydsl-examples/querydsl-example-jpa-guice/src/main/java/com/querydsl/example/jpa/repository/TweetRepository.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- querydsl-examples/querydsl-example-jpa-guice/src/main/java/com/querydsl/example/jpa/repository/TweetRepository.java (revision 2bf234caf78549813a1e0f44d9c30ecc5ef734e3)
+++ querydsl-examples/querydsl-example-jpa-guice/src/main/java/com/querydsl/example/jpa/repository/TweetRepository.java (date 1529698923000)
@@ -1,11 +1,11 @@
package com.querydsl.example.jpa.repository;
+import java.util.List;
+
import com.google.inject.persist.Transactional;
import com.querydsl.core.types.Predicate;
import com.querydsl.example.jpa.model.Tweet;
-import java.util.List;
-
import static com.querydsl.example.jpa.model.QTweet.tweet;
@Transactional
@@ -23,4 +23,10 @@
public List<Tweet> findAll(Predicate expr) {
return selectFrom(tweet).where(expr).fetch();
}
+
+ public List<Tweet> findAllWithHibernateQuery(Predicate expr) {
+ // we are not using JPAQuery here, but HibernateQuery so that we can
+ // potentially do things like calling "setLockMode"
+ return selectFromHibernateQuery(tweet).where(expr).fetch();
+ }
}
Index: querydsl-examples/querydsl-example-jpa-guice/src/test/java/com/querydsl/example/jpa/repository/TweetRepositoryTest.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- querydsl-examples/querydsl-example-jpa-guice/src/test/java/com/querydsl/example/jpa/repository/TweetRepositoryTest.java (revision 2bf234caf78549813a1e0f44d9c30ecc5ef734e3)
+++ querydsl-examples/querydsl-example-jpa-guice/src/test/java/com/querydsl/example/jpa/repository/TweetRepositoryTest.java (date 1529697479000)
@@ -1,14 +1,15 @@
package com.querydsl.example.jpa.repository;
+import java.util.Collections;
+import java.util.List;
+
+import javax.inject.Inject;
+
import com.google.common.collect.Lists;
import com.querydsl.example.jpa.model.Tweet;
import com.querydsl.example.jpa.model.User;
import org.junit.Test;
-import javax.inject.Inject;
-import java.util.Collections;
-import java.util.List;
-
import static com.querydsl.example.jpa.model.QTweet.tweet;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -40,7 +41,7 @@
repository.save(new Tweet(poster, "It is a alive! #YOLO", Collections.<User>emptyList(), null));
repository.save(new Tweet(poster, "Oh the humanity!", Collections.<User>emptyList(), null));
repository.save(new Tweet(poster, "#EpicFail", Collections.<User>emptyList(), null));
- assertEquals(1, repository.findAll(tweet.content.contains("#YOLO")).size());
+ assertEquals(1, repository.findAllWithHibernateQuery(tweet.content.contains("#YOLO")).size());
}
@Test
@@ -55,12 +56,12 @@
for (int i = 0; i < 100; ++i) {
repository.save(new Tweet(poster, "spamming @dr_frank " + i, users.subList(0, 1), null));
}
- assertTrue(repository.findAll(tweet.mentions.contains(users.get(1))).isEmpty());
+ assertTrue(repository.findAllWithHibernateQuery(tweet.mentions.contains(users.get(1))).isEmpty());
- assertEquals(100, repository.findAll(tweet.mentions.contains(users.get(0))).size());
+ assertEquals(100, repository.findAllWithHibernateQuery(tweet.mentions.contains(users.get(0))).size());
- assertTrue(repository.findAll(tweet.mentions.any().username.eq("duplo")).isEmpty());
+ assertTrue(repository.findAllWithHibernateQuery(tweet.mentions.any().username.eq("duplo")).isEmpty());
- assertEquals(100, repository.findAll(tweet.mentions.any().username.eq("dr_frank")).size());
+ assertEquals(100, repository.findAllWithHibernateQuery(tweet.mentions.any().username.eq("dr_frank")).size());
}
}
Index: querydsl-jpa/src/test/java/com/querydsl/jpa/support/TeradataDialect.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- querydsl-jpa/src/test/java/com/querydsl/jpa/support/TeradataDialect.java (revision 2bf234caf78549813a1e0f44d9c30ecc5ef734e3)
+++ querydsl-jpa/src/test/java/com/querydsl/jpa/support/TeradataDialect.java (date 1529698336000)
@@ -141,7 +141,7 @@
return "";
}
- @Override
+ // Got removed in Hibernate 5.1 @Override
public boolean supportsIdentityColumns() {
return false;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment