Skip to content

Commit c73c1c9

Browse files
committed
improve SessionImpl.unwrap()
1 parent 9d6ff28 commit c73c1c9

File tree

1 file changed

+7
-17
lines changed

1 file changed

+7
-17
lines changed

hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@
153153
import jakarta.persistence.CacheRetrieveMode;
154154
import jakarta.persistence.CacheStoreMode;
155155
import jakarta.persistence.EntityGraph;
156-
import jakarta.persistence.EntityManager;
157156
import jakarta.persistence.EntityNotFoundException;
158157
import jakarta.persistence.FindOption;
159158
import jakarta.persistence.FlushModeType;
@@ -2949,27 +2948,18 @@ public ProcedureCall createStoredProcedureQuery(String procedureName, String...
29492948
}
29502949

29512950
@Override
2952-
@SuppressWarnings("unchecked")
2953-
public <T> T unwrap(Class<T> clazz) {
2951+
public <T> T unwrap(Class<T> type) {
29542952
checkOpen();
29552953

2956-
if ( Session.class.isAssignableFrom( clazz ) ) {
2957-
return (T) this;
2954+
if ( type.isInstance( this ) ) {
2955+
return type.cast( this );
29582956
}
2959-
if ( SessionImplementor.class.isAssignableFrom( clazz ) ) {
2960-
return (T) this;
2961-
}
2962-
if ( SharedSessionContractImplementor.class.isAssignableFrom( clazz ) ) {
2963-
return (T) this;
2964-
}
2965-
if ( EntityManager.class.isAssignableFrom( clazz ) ) {
2966-
return (T) this;
2967-
}
2968-
if ( PersistenceContext.class.isAssignableFrom( clazz ) ) {
2969-
return (T) this;
2957+
2958+
if ( type.isInstance( persistenceContext ) ) {
2959+
return type.cast( persistenceContext );
29702960
}
29712961

2972-
throw new PersistenceException( "Hibernate cannot unwrap " + clazz );
2962+
throw new PersistenceException( "Hibernate cannot unwrap EntityManager as '" + type.getName() + "'" );
29732963
}
29742964

29752965
@Override

0 commit comments

Comments
 (0)