diff --git a/querydsl-jpa/src/main/java/com/mysema/query/jpa/hibernate/AbstractHibernateQuery.java b/querydsl-jpa/src/main/java/com/mysema/query/jpa/hibernate/AbstractHibernateQuery.java index e0d51ba7b..0d97aed81 100644 --- a/querydsl-jpa/src/main/java/com/mysema/query/jpa/hibernate/AbstractHibernateQuery.java +++ b/querydsl-jpa/src/main/java/com/mysema/query/jpa/hibernate/AbstractHibernateQuery.java @@ -11,6 +11,7 @@ import java.util.Map; import javax.annotation.Nullable; +import org.hibernate.FlushMode; import org.hibernate.LockMode; import org.hibernate.Query; import org.hibernate.ScrollMode; @@ -45,13 +46,18 @@ public abstract class AbstractHibernateQuery private static final Logger logger = LoggerFactory.getLogger(HibernateQuery.class); + @Nullable private Boolean cacheable, readOnly; + @Nullable private String cacheRegion; private int fetchSize = 0; private final Map,LockMode> lockModes = new HashMap,LockMode>(); + + @Nullable + private FlushMode flushMode; private final SessionHolder session; @@ -143,6 +149,9 @@ public abstract class AbstractHibernateQuery for (Map.Entry, LockMode> entry : lockModes.entrySet()){ query.setLockMode(entry.getKey().toString(), entry.getValue()); } + if (flushMode != null) { + query.setFlushMode(flushMode); + } if (modifiers != null && modifiers.isRestricting()) { if (modifiers.getLimit() != null) { @@ -322,6 +331,15 @@ public abstract class AbstractHibernateQuery lockModes.put(path, lockMode); return (Q)this; } + + /** + * Override the current session flush mode, just for this query. + */ + @SuppressWarnings("unchecked") + public Q setFlushMode(FlushMode flushMode) { + this.flushMode = flushMode; + return (Q)this; + } /** * Entities retrieved by this query will be loaded in