Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@

import org.hibernate.QueryTimeoutException;
import org.hibernate.exception.LockTimeoutException;
import org.hibernate.jpa.QueryHints;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.query.Query;
import org.hibernate.search.engine.common.timing.Deadline;
import org.hibernate.search.mapper.orm.common.impl.HibernateOrmUtils;
import org.hibernate.search.mapper.orm.search.query.spi.HibernateOrmSearchQueryHints;
import org.hibernate.search.mapper.pojo.loading.spi.PojoSelectionEntityLoader;

abstract class AbstractHibernateOrmSelectionEntityLoader<E> implements PojoSelectionEntityLoader<E> {
Expand Down Expand Up @@ -59,7 +59,7 @@ final Query<E> createQuery(int fetchSize, Long timeout) {

query.setFetchSize( fetchSize );
if ( timeout != null ) {
query.setHint( QueryHints.SPEC_HINT_TIMEOUT, Math.toIntExact( timeout ) );
query.setHint( HibernateOrmSearchQueryHints.JAVAX_TIMEOUT, Math.toIntExact( timeout ) );
}

EntityGraphHint<?> entityGraphHint = loadingOptions.entityGraphHintOrNullForType( entityPersister );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,16 +171,19 @@ public String getQueryString() {
@Override
public HibernateOrmSearchQueryAdapter<R> setHint(String hintName, Object value) {
switch ( hintName ) {
case HibernateOrmSearchQueryHints.TIMEOUT_JPA:
case HibernateOrmSearchQueryHints.JAVAX_TIMEOUT:
case HibernateOrmSearchQueryHints.JAKARTA_TIMEOUT:
delegate.failAfter( hintValueToLong( value ), TimeUnit.MILLISECONDS );
break;
case HibernateOrmSearchQueryHints.TIMEOUT_HIBERNATE:
case HibernateOrmSearchQueryHints.HIBERNATE_TIMEOUT:
setTimeout( hintValueToInteger( value ) );
break;
case HibernateOrmSearchQueryHints.FETCHGRAPH:
case HibernateOrmSearchQueryHints.JAVAX_FETCHGRAPH:
case HibernateOrmSearchQueryHints.JAKARTA_FETCHGRAPH:
applyGraph( hintValueToEntityGraph( value ), GraphSemantic.FETCH );
break;
case HibernateOrmSearchQueryHints.LOADGRAPH:
case HibernateOrmSearchQueryHints.JAVAX_LOADGRAPH:
case HibernateOrmSearchQueryHints.JAKARTA_LOADGRAPH:
applyGraph( hintValueToEntityGraph( value ), GraphSemantic.LOAD );
break;
default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,25 @@
* Constants for query hints accepted by Hibernate Search.
* <p>
* We redefine the constants here instead of using those exposed by Hibernate ORM,
* because the constants from Hibernate ORM are not transformed currently
* in some versions of the Jakarta artifacts (they start with "javax.persistence." instead of "jakarta.persistence.").
* By defining the constants directly in our project, we can transform the constants correctly
* in our own Jakarta artifacts.
* because the constants from Hibernate ORM are not compile-time constants:
* some of them are initialized during static class initialization,
* which prevents their use in switch constructs, in particular.
*/
public final class HibernateOrmSearchQueryHints {
private HibernateOrmSearchQueryHints() {
}

public static final String TIMEOUT_JPA = "javax.persistence.query.timeout";
public static final String TIMEOUT_HIBERNATE = "org.hibernate.timeout";
public static final String FETCHGRAPH = "javax.persistence.fetchgraph";
public static final String LOADGRAPH = "javax.persistence.loadgraph";
// Don't remove the string concatenations:
// they're hacks to avoid automated replacements when building some artifacts.
private static final String JAVAX_PREFIX = "javax" + ".persistence.";
private static final String JAKARTA_PREFIX = "jakarta" + ".persistence.";
private static final String HIBERNATE_PREFIX = "org.hibernate.";

public static final String JAVAX_TIMEOUT = JAVAX_PREFIX + "query.timeout";
public static final String JAKARTA_TIMEOUT = JAKARTA_PREFIX + "query.timeout";
public static final String HIBERNATE_TIMEOUT = HIBERNATE_PREFIX + "timeout";
public static final String JAVAX_FETCHGRAPH = JAVAX_PREFIX + "fetchgraph";
public static final String JAKARTA_FETCHGRAPH = JAKARTA_PREFIX + "fetchgraph";
public static final String JAVAX_LOADGRAPH = JAVAX_PREFIX + "loadgraph";
public static final String JAKARTA_LOADGRAPH = JAKARTA_PREFIX + "loadgraph";
}
21 changes: 11 additions & 10 deletions orm6/mapper/orm/ant-src-changes.patch
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,7 @@ index 355980c45a..30e334a6a0 100644
|| isWholePath && isAssociation( containedValueClass ) ) {
pathsAsStrings.add( propertyNode.toPropertyString() );
diff --git a/main/java/org/hibernate/search/mapper/orm/search/query/impl/HibernateOrmSearchQueryAdapter.java b/main/java/org/hibernate/search/mapper/orm/search/query/impl/HibernateOrmSearchQueryAdapter.java
index 16dc46a2f9..f5ddb7584e 100644
index c8ca89a1e0..7203e7d6e8 100644
--- a/main/java/org/hibernate/search/mapper/orm/search/query/impl/HibernateOrmSearchQueryAdapter.java
+++ b/main/java/org/hibernate/search/mapper/orm/search/query/impl/HibernateOrmSearchQueryAdapter.java
@@ -7,52 +7,48 @@
Expand Down Expand Up @@ -644,13 +644,14 @@ index 16dc46a2f9..f5ddb7584e 100644
@Override
public HibernateOrmSearchQueryAdapter<R> setHint(String hintName, Object value) {
switch ( hintName ) {
@@ -178,13 +123,11 @@ public HibernateOrmSearchQueryAdapter<R> setHint(String hintName, Object value)
setTimeout( hintValueToInteger( value ) );
@@ -180,14 +125,12 @@ public HibernateOrmSearchQueryAdapter<R> setHint(String hintName, Object value)
break;
case HibernateOrmSearchQueryHints.FETCHGRAPH:
case HibernateOrmSearchQueryHints.JAVAX_FETCHGRAPH:
case HibernateOrmSearchQueryHints.JAKARTA_FETCHGRAPH:
- applyGraph( hintValueToEntityGraph( value ), GraphSemantic.FETCH );
- break;
case HibernateOrmSearchQueryHints.LOADGRAPH:
case HibernateOrmSearchQueryHints.JAVAX_LOADGRAPH:
case HibernateOrmSearchQueryHints.JAKARTA_LOADGRAPH:
- applyGraph( hintValueToEntityGraph( value ), GraphSemantic.LOAD );
+ applyEntityGraphQueryHint( hintName, hintValueToEntityGraph( value ) );
break;
Expand All @@ -660,7 +661,7 @@ index 16dc46a2f9..f5ddb7584e 100644
break;
}
return this;
@@ -204,141 +147,98 @@ public HibernateOrmSearchQueryAdapter<R> applyGraph(RootGraph graph, GraphSemant
@@ -207,141 +150,98 @@ public HibernateOrmSearchQueryAdapter<R> applyGraph(RootGraph graph, GraphSemant
}

@Override
Expand Down Expand Up @@ -849,7 +850,7 @@ index 16dc46a2f9..f5ddb7584e 100644
throw parametersNoSupported();
}

@@ -347,18 +247,16 @@ private UnsupportedOperationException parametersNoSupported() {
@@ -350,18 +250,16 @@ private UnsupportedOperationException parametersNoSupported() {
}

@Override
Expand All @@ -873,7 +874,7 @@ index 16dc46a2f9..f5ddb7584e 100644
return new UnsupportedOperationException( "Result transformers are not supported in Hibernate Search queries" );
}

@@ -388,7 +286,12 @@ private UnsupportedOperationException lockOptionsNotSupported() {
@@ -391,7 +289,12 @@ private UnsupportedOperationException lockOptionsNotSupported() {
}

@Override
Expand All @@ -887,7 +888,7 @@ index 16dc46a2f9..f5ddb7584e 100644
throw new UnsupportedOperationException( "executeUpdate is not supported in Hibernate Search queries" );
}

@@ -397,30 +300,6 @@ public HibernateOrmSearchQueryAdapter<R> setLockMode(String alias, LockMode lock
@@ -400,30 +303,6 @@ public HibernateOrmSearchQueryAdapter<R> setLockMode(String alias, LockMode lock
throw lockOptionsNotSupported();
}

Expand Down Expand Up @@ -918,7 +919,7 @@ index 16dc46a2f9..f5ddb7584e 100644
private static long hintValueToLong(Object value) {
if ( value instanceof Number ) {
return ( (Number) value ).longValue();
@@ -439,8 +318,8 @@ private static int hintValueToInteger(Object value) {
@@ -442,8 +321,8 @@ private static int hintValueToInteger(Object value) {
}
}

Expand Down
25 changes: 13 additions & 12 deletions orm6/v5migrationhelper/orm/ant-src-changes.patch
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
diff --git a/main/java/org/hibernate/search/query/hibernate/impl/FullTextQueryImpl.java b/main/java/org/hibernate/search/query/hibernate/impl/FullTextQueryImpl.java
index b767d5a847..a846f79cee 100644
index c6481cc62e..8e34239ef1 100644
--- a/main/java/org/hibernate/search/query/hibernate/impl/FullTextQueryImpl.java
+++ b/main/java/org/hibernate/search/query/hibernate/impl/FullTextQueryImpl.java
@@ -7,21 +7,17 @@
Expand Down Expand Up @@ -237,13 +237,14 @@ index b767d5a847..a846f79cee 100644
@Override
@SuppressWarnings("deprecation")
public FullTextQuery setHint(String hintName, Object value) {
@@ -264,116 +246,55 @@ public FullTextQuery setHint(String hintName, Object value) {
setTimeout( hintValueToInteger( value ) );
@@ -266,117 +248,56 @@ public FullTextQuery setHint(String hintName, Object value) {
break;
case HibernateOrmSearchQueryHints.FETCHGRAPH:
case HibernateOrmSearchQueryHints.JAVAX_FETCHGRAPH:
case HibernateOrmSearchQueryHints.JAKARTA_FETCHGRAPH:
- applyGraph( hintValueToEntityGraph( value ), GraphSemantic.FETCH );
- break;
case HibernateOrmSearchQueryHints.LOADGRAPH:
case HibernateOrmSearchQueryHints.JAVAX_LOADGRAPH:
case HibernateOrmSearchQueryHints.JAKARTA_LOADGRAPH:
- applyGraph( hintValueToEntityGraph( value ), GraphSemantic.LOAD );
+ applyEntityGraphQueryHint( hintName, hintValueToEntityGraph( value ) );
break;
Expand Down Expand Up @@ -374,7 +375,7 @@ index b767d5a847..a846f79cee 100644
throw parametersNoSupported();
}

@@ -388,12 +309,7 @@ public FullTextQueryImpl setFlushMode(FlushModeType flushModeType) {
@@ -391,12 +312,7 @@ public FullTextQueryImpl setFlushMode(FlushModeType flushModeType) {

@Override
public FullTextQueryImpl setFetchSize(int fetchSize) {
Expand All @@ -388,7 +389,7 @@ index b767d5a847..a846f79cee 100644
}

@Override
@@ -431,7 +347,12 @@ public Object unwrap(Class type) {
@@ -434,7 +350,12 @@ public Object unwrap(Class type) {
if ( type == org.apache.lucene.search.Query.class ) {
return hSearchQuery.getLuceneQuery();
}
Expand All @@ -402,7 +403,7 @@ index b767d5a847..a846f79cee 100644
}

@Override
@@ -454,7 +375,12 @@ private UnsupportedOperationException lockOptionsNotSupported() {
@@ -457,7 +378,12 @@ private UnsupportedOperationException lockOptionsNotSupported() {
}

@Override
Expand All @@ -416,7 +417,7 @@ index b767d5a847..a846f79cee 100644
throw new UnsupportedOperationException( "executeUpdate is not supported in Hibernate Search queries" );
}

@@ -512,32 +438,13 @@ public String getQueryString() {
@@ -515,32 +441,13 @@ public String getQueryString() {
}

@Override
Expand Down Expand Up @@ -453,7 +454,7 @@ index b767d5a847..a846f79cee 100644
}

@Override
@@ -546,12 +453,12 @@ public String toString() {
@@ -549,12 +456,12 @@ public String toString() {
}

private static final class Search5ScrollHitExtractor
Expand All @@ -468,7 +469,7 @@ index b767d5a847..a846f79cee 100644
if ( hit instanceof Object[] ) {
return (Object[]) hit;
}
@@ -559,19 +466,6 @@ public Object[] toArray(Object hit) {
@@ -562,19 +469,6 @@ public Object[] toArray(Object hit) {
return new Object[] { hit };
}
}
Expand All @@ -488,7 +489,7 @@ index b767d5a847..a846f79cee 100644
}

private static int hintValueToInteger(Object value) {
@@ -583,7 +477,7 @@ private static int hintValueToInteger(Object value) {
@@ -586,7 +480,7 @@ private static int hintValueToInteger(Object value) {
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,16 +257,19 @@ public int getFirstResult() {
public FullTextQuery setHint(String hintName, Object value) {
hints.put( hintName, value );
switch ( hintName ) {
case HibernateOrmSearchQueryHints.TIMEOUT_JPA:
case HibernateOrmSearchQueryHints.JAVAX_TIMEOUT:
case HibernateOrmSearchQueryHints.JAKARTA_TIMEOUT:
setTimeout( hintValueToInteger( value ), TimeUnit.MILLISECONDS );
break;
case HibernateOrmSearchQueryHints.TIMEOUT_HIBERNATE:
case HibernateOrmSearchQueryHints.HIBERNATE_TIMEOUT:
setTimeout( hintValueToInteger( value ) );
break;
case HibernateOrmSearchQueryHints.FETCHGRAPH:
case HibernateOrmSearchQueryHints.JAVAX_FETCHGRAPH:
case HibernateOrmSearchQueryHints.JAKARTA_FETCHGRAPH:
applyGraph( hintValueToEntityGraph( value ), GraphSemantic.FETCH );
break;
case HibernateOrmSearchQueryHints.LOADGRAPH:
case HibernateOrmSearchQueryHints.JAVAX_LOADGRAPH:
case HibernateOrmSearchQueryHints.JAKARTA_LOADGRAPH:
applyGraph( hintValueToEntityGraph( value ), GraphSemantic.LOAD );
break;
default:
Expand Down