mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-30 21:08:30 +08:00
#248 Use Multimap for query hints
This commit is contained in:
parent
a71ac1dad6
commit
49f91136f6
@ -14,7 +14,7 @@
|
||||
package com.mysema.query.jpa.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -27,6 +27,9 @@ import javax.persistence.Query;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.google.common.collect.Multiset.Entry;
|
||||
import com.mysema.commons.lang.CloseableIterator;
|
||||
import com.mysema.commons.lang.IteratorAdapter;
|
||||
import com.mysema.query.DefaultQueryMetadata;
|
||||
@ -79,7 +82,7 @@ public abstract class AbstractJPAQuery<Q extends AbstractJPAQuery<Q>> extends JP
|
||||
}
|
||||
}
|
||||
|
||||
protected final Map<String,Object> hints = new HashMap<String,Object>();
|
||||
protected final Multimap<String,Object> hints = HashMultimap.create();
|
||||
|
||||
@Nullable
|
||||
protected LockModeType lockMode;
|
||||
@ -165,7 +168,7 @@ public abstract class AbstractJPAQuery<Q extends AbstractJPAQuery<Q>> extends JP
|
||||
query.setFlushMode(flushMode);
|
||||
}
|
||||
|
||||
for (Map.Entry<String, Object> entry : hints.entrySet()) {
|
||||
for (Map.Entry<String, Object> entry : hints.entries()) {
|
||||
query.setHint(entry.getKey(), entry.getValue());
|
||||
}
|
||||
|
||||
|
||||
@ -14,7 +14,6 @@
|
||||
package com.mysema.query.jpa.sql;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -27,6 +26,8 @@ import javax.persistence.Query;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.mysema.commons.lang.CloseableIterator;
|
||||
import com.mysema.commons.lang.IteratorAdapter;
|
||||
import com.mysema.query.DefaultQueryMetadata;
|
||||
@ -69,7 +70,7 @@ public abstract class AbstractJPASQLQuery<Q extends AbstractJPASQLQuery<Q> & com
|
||||
|
||||
protected final SQLTemplates templates;
|
||||
|
||||
protected final Map<String,Object> hints = new HashMap<String,Object>();
|
||||
protected final Multimap<String,Object> hints = HashMultimap.create();
|
||||
|
||||
@Nullable
|
||||
protected Expression<?> union;
|
||||
@ -137,7 +138,7 @@ public abstract class AbstractJPASQLQuery<Q extends AbstractJPASQLQuery<Q> & com
|
||||
query.setFlushMode(flushMode);
|
||||
}
|
||||
|
||||
for (Map.Entry<String, Object> entry : hints.entrySet()) {
|
||||
for (Map.Entry<String, Object> entry : hints.entries()) {
|
||||
query.setHint(entry.getKey(), entry.getValue());
|
||||
}
|
||||
|
||||
|
||||
@ -106,6 +106,7 @@ public class JPABase extends AbstractStandardTest {
|
||||
javax.persistence.Query query = query().from(QCat.cat)
|
||||
.setHint("org.hibernate.cacheable", true)
|
||||
.createQuery(QCat.cat);
|
||||
|
||||
assertNotNull(query);
|
||||
assertTrue(query.getHints().containsKey("org.hibernate.cacheable"));
|
||||
assertFalse(query.getResultList().isEmpty());
|
||||
@ -116,6 +117,19 @@ public class JPABase extends AbstractStandardTest {
|
||||
assertFalse(query().from(QCat.cat).setHint("org.hibernate.cacheable", true)
|
||||
.list(QCat.cat).isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
@NoHibernate @NoOpenJPA @NoBatooJPA
|
||||
public void Hint3() {
|
||||
javax.persistence.Query query = query().from(QCat.cat)
|
||||
.setHint("eclipselink.batch.type", "IN")
|
||||
.setHint("eclipselink.batch", "person.workAddress")
|
||||
.setHint("eclipselink.batch", "person.homeAddress")
|
||||
.createQuery(QCat.cat);
|
||||
|
||||
assertNotNull(query);
|
||||
assertEquals("person.homeAddress", query.getHints().get("eclipselink.batch"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void LockMode(){
|
||||
|
||||
Loading…
Reference in New Issue
Block a user