Skip to content

Commit 69a607e

Browse files
committed
three code cleanups
1 parent dde66e0 commit 69a607e

File tree

4 files changed

+75
-82
lines changed

4 files changed

+75
-82
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/event/impl/AbstractReactiveSaveEventListener.java

+14-16
Original file line numberDiff line numberDiff line change
@@ -180,23 +180,21 @@ private CompletionStage<Object> generateId(
180180
EventSource source,
181181
ReactiveIdentifierGenerator<?> generator,
182182
EntityPersister persister) {
183-
return generator
184-
.generate( (ReactiveConnectionSupplier) source, entity )
183+
return generator.generate( (ReactiveConnectionSupplier) source, entity )
185184
.thenApply( id -> {
186-
final Object generatedId = castToIdentifierType( id, persister );
187-
if ( generatedId == null ) {
188-
throw new IdentifierGenerationException( "null id generated for: " + entity.getClass() );
189-
}
190-
if ( LOG.isDebugEnabled() ) {
191-
LOG.debugf(
192-
"Generated identifier: %s, using strategy: %s",
193-
persister.getIdentifierType().toLoggableString( generatedId, source.getFactory() ),
194-
generator.getClass().getName()
195-
);
196-
}
197-
return generatedId;
198-
}
199-
);
185+
final Object generatedId = castToIdentifierType( id, persister );
186+
if ( generatedId == null ) {
187+
throw new IdentifierGenerationException( "null id generated for: " + entity.getClass() );
188+
}
189+
if ( LOG.isDebugEnabled() ) {
190+
LOG.debugf(
191+
"Generated identifier: %s, using strategy: %s",
192+
persister.getIdentifierType().toLoggableString( generatedId, source.getFactory() ),
193+
generator.getClass().getName()
194+
);
195+
}
196+
return generatedId;
197+
} );
200198
}
201199

202200
/**

hibernate-reactive-core/src/main/java/org/hibernate/reactive/session/ReactiveQueryProducer.java

+3
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,13 @@ public interface ReactiveQueryProducer extends ReactiveConnectionSupplier {
6363

6464
<R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, Class<R> resultClass);
6565

66+
@Deprecated(forRemoval = true)
6667
<R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, Class<R> resultClass, String tableAlias);
6768

69+
@Deprecated(forRemoval = true)
6870
<R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, String resultSetMappingName);
6971

72+
@Deprecated(forRemoval = true)
7073
<R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, String resultSetMappingName, Class<R> resultClass);
7174

7275
<R> ReactiveSelectionQuery<R> createReactiveSelectionQuery(String hqlString, Class<R> resultType);

hibernate-reactive-core/src/main/java/org/hibernate/reactive/session/impl/ReactiveSessionImpl.java

+19-15
Original file line numberDiff line numberDiff line change
@@ -415,23 +415,21 @@ public void prepareForQueryExecution(boolean requiresTxn) {
415415
@Override
416416
public <T> ReactiveNativeQuery<T> createReactiveNativeQuery(String sqlString, Class<T> resultClass) {
417417
final ReactiveNativeQuery<T> query = createReactiveNativeQuery( sqlString );
418-
return addResultType( resultClass, query );
418+
handleTupleResultType( resultClass, query );
419+
addEntityOrResultType( resultClass, query );
420+
return query;
419421
}
420422

421-
private <T> ReactiveNativeQuery<T> addResultType(Class<T> resultClass, ReactiveNativeQuery<T> query) {
422-
if ( Tuple.class.equals( resultClass ) ) {
423-
query.setTupleTransformer( new NativeQueryTupleTransformer() );
424-
}
425-
else if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
423+
private <T> void addEntityOrResultType(Class<T> resultClass, ReactiveNativeQuery<T> query) {
424+
if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
426425
query.addEntity( "alias1", resultClass.getName(), LockMode.READ );
427426
}
428-
else if ( resultClass != Object.class && resultClass != Object[].class ) {
427+
else if ( resultClass != Object.class && resultClass != Object[].class && resultClass != Tuple.class ) {
429428
query.addResultTypeClass( resultClass );
430429
}
431-
return query;
432430
}
433431

434-
@Override
432+
@Override @Deprecated(forRemoval = true)
435433
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, Class<R> resultClass, String tableAlias) {
436434
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString );
437435
if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
@@ -443,7 +441,7 @@ public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, Cl
443441
}
444442
}
445443

446-
@Override
444+
@Override @Deprecated(forRemoval = true)
447445
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, String resultSetMappingName) {
448446
checkOpen();
449447
pulseTransactionCoordinator();
@@ -460,12 +458,10 @@ public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, St
460458
}
461459
}
462460

463-
@Override
461+
@Override @Deprecated(forRemoval = true)
464462
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, String resultSetMappingName, Class<R> resultClass) {
465463
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString, resultSetMappingName );
466-
if ( Tuple.class.equals( resultClass ) ) {
467-
query.setTupleTransformer( new NativeQueryTupleTransformer() );
468-
}
464+
handleTupleResultType( resultClass, query );
469465
return query;
470466
}
471467

@@ -610,7 +606,15 @@ private void addAffectedEntities(AffectedEntities affectedEntities, NativeQueryI
610606
@Override
611607
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String queryString, Class<R> resultType, AffectedEntities affectedEntities) {
612608
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( queryString, affectedEntities );
613-
return addResultType( resultType, query );
609+
handleTupleResultType( resultType, query );
610+
addEntityOrResultType( resultType, query );
611+
return query;
612+
}
613+
614+
private static <R> void handleTupleResultType(Class<R> resultType, ReactiveNativeQuery<R> query) {
615+
if ( Tuple.class.equals(resultType) ) {
616+
query.setTupleTransformer( NativeQueryTupleTransformer.INSTANCE );
617+
}
614618
}
615619

616620
@Override

hibernate-reactive-core/src/main/java/org/hibernate/reactive/session/impl/ReactiveStatelessSessionImpl.java

+39-51
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,8 @@
5151
import org.hibernate.query.criteria.JpaCriteriaQuery;
5252
import org.hibernate.query.criteria.JpaRoot;
5353
import org.hibernate.query.hql.spi.SqmQueryImplementor;
54-
import org.hibernate.query.named.NamedResultSetMappingMemento;
5554
import org.hibernate.query.spi.HqlInterpretation;
5655
import org.hibernate.query.spi.QueryImplementor;
57-
import org.hibernate.query.sql.internal.NativeQueryImpl;
5856
import org.hibernate.query.sql.spi.NativeQueryImplementor;
5957
import org.hibernate.query.sqm.internal.SqmUtil;
6058
import org.hibernate.query.sqm.tree.SqmStatement;
@@ -372,12 +370,18 @@ private void firePostInsert(Object entity, Object id, Object[] state, EntityPers
372370

373371
private CompletionStage<?> generateId(EntityPersister persister, Object entity, Generator generator) {
374372
if ( generator.generatesOnInsert() ) {
375-
return generator instanceof ReactiveIdentifierGenerator
376-
? ( (ReactiveIdentifierGenerator<?>) generator ).generate( this, this )
377-
: completedFuture( ( (BeforeExecutionGenerator) generator ).generate( this, entity, null, INSERT ) );
378-
}
373+
if ( generator instanceof ReactiveIdentifierGenerator<?> reactiveGenerator ) {
374+
return reactiveGenerator.generate(this, this);
375+
}
376+
else if ( generator instanceof BeforeExecutionGenerator beforeExecutionGenerator ) {
377+
return completedFuture( beforeExecutionGenerator.generate(this, entity, null, INSERT) );
378+
}
379+
else {
380+
throw new IllegalArgumentException( "Unsupported generator type: " + generator.getClass().getName() );
381+
}
382+
}
379383
else {
380-
Object id = persister.getIdentifier( entity, this );
384+
final Object id = persister.getIdentifier( entity, this );
381385
if ( id == null ) {
382386
throw new IdentifierGenerationException( "Identifier of entity '" + persister.getEntityName() + "' must be manually assigned before calling 'insert()'" );
383387
}
@@ -878,8 +882,7 @@ public <R> ReactiveNativeQueryImplementor<R> createReactiveNativeQuery(String sq
878882
delayedAfterCompletion();
879883

880884
try {
881-
ReactiveNativeQueryImpl<R> query = new ReactiveNativeQueryImpl<>( sqlString, this);
882-
885+
final ReactiveNativeQueryImpl<R> query = new ReactiveNativeQueryImpl<>( sqlString, this );
883886
if ( isEmpty( query.getComment() ) ) {
884887
query.setComment( "dynamic native SQL query" );
885888
}
@@ -893,69 +896,60 @@ public <R> ReactiveNativeQueryImplementor<R> createReactiveNativeQuery(String sq
893896

894897
@Override
895898
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, Class<R> resultClass) {
896-
ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString );
897-
if ( Tuple.class.equals( resultClass ) ) {
898-
query.setTupleTransformer( new NativeQueryTupleTransformer() );
899-
}
900-
else if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
899+
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString );
900+
handleTupleResultType( resultClass, query );
901+
addEntityOrResultType( resultClass, query );
902+
return query;
903+
}
904+
905+
private <R> void addEntityOrResultType(Class<R> resultClass, ReactiveNativeQuery<R> query) {
906+
if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
901907
query.addEntity( "alias1", resultClass.getName(), LockMode.READ );
902908
}
903-
else {
904-
( (NativeQueryImpl<?>) query ).addScalar( 1, resultClass );
909+
else if ( resultClass != Object.class && resultClass != Object[].class && resultClass != Tuple.class ) {
910+
query.addResultTypeClass( resultClass );
905911
}
906-
return query;
907912
}
908913

909-
@Override
914+
@Override @Deprecated(forRemoval = true)
910915
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(
911916
String sqlString,
912917
Class<R> resultClass,
913918
String tableAlias) {
914919
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString );
915-
if ( getFactory().getMappingMetamodel().isEntityClass(resultClass) ) {
920+
if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
916921
query.addEntity( tableAlias, resultClass.getName(), LockMode.READ );
917922
return query;
918923
}
919-
920-
throw new UnknownEntityTypeException( "unable to locate persister: " + resultClass.getName() );
924+
else {
925+
throw new UnknownEntityTypeException( "unable to locate persister: " + resultClass.getName() );
926+
}
921927
}
922928

923-
@Override
929+
@Override @Deprecated(forRemoval = true)
924930
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, String resultSetMappingName) {
925931
checkOpen();
926932
pulseTransactionCoordinator();
927933
delayedAfterCompletion();
928934

929935
try {
930-
if ( isNotEmpty( resultSetMappingName ) ) {
931-
final NamedResultSetMappingMemento resultSetMappingMemento = getFactory().getQueryEngine()
932-
.getNamedObjectRepository()
933-
.getResultSetMappingMemento( resultSetMappingName );
934-
935-
if ( resultSetMappingMemento == null ) {
936-
throw new HibernateException( "Could not resolve specified result-set mapping name : " + resultSetMappingName );
937-
}
938-
return new ReactiveNativeQueryImpl<>( sqlString, resultSetMappingMemento, this );
939-
}
940-
else {
941-
return new ReactiveNativeQueryImpl<>( sqlString, this );
942-
}
936+
return isNotEmpty( resultSetMappingName )
937+
? new ReactiveNativeQueryImpl<>( sqlString, getResultSetMappingMemento( resultSetMappingName ), this )
938+
: new ReactiveNativeQueryImpl<>( sqlString, this );
943939
//TODO: why no applyQuerySettingsAndHints( query ); ???
944940
}
945941
catch (RuntimeException he) {
946942
throw getExceptionConverter().convert( he );
947943
}
948944
}
949945

950-
@Override
946+
@Override @Deprecated(forRemoval = true)
951947
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(
952948
String sqlString,
953949
String resultSetMappingName,
954950
Class<R> resultClass) {
955951
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString, resultSetMappingName );
956-
if ( Tuple.class.equals( resultClass ) ) {
957-
query.setTupleTransformer( new NativeQueryTupleTransformer() );
958-
}
952+
handleTupleResultType( resultClass, query );
959953
return query;
960954
}
961955

@@ -1097,21 +1091,15 @@ public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(
10971091
Class<R> resultType,
10981092
AffectedEntities affectedEntities) {
10991093
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( queryString, affectedEntities );
1100-
return addResultType( resultType, query );
1094+
handleTupleResultType( resultType, query );
1095+
addEntityOrResultType( resultType, query );
1096+
return query;
11011097
}
11021098

1103-
//TODO: copy/paste from ORM, change visibility
1104-
private <T> ReactiveNativeQuery<T> addResultType(Class<T> resultClass, ReactiveNativeQuery<T> query) {
1105-
if ( Tuple.class.equals( resultClass ) ) {
1106-
query.setTupleTransformer( new NativeQueryTupleTransformer() );
1099+
private static <R> void handleTupleResultType(Class<R> resultType, ReactiveNativeQuery<R> query) {
1100+
if ( Tuple.class.equals(resultType) ) {
1101+
query.setTupleTransformer( NativeQueryTupleTransformer.INSTANCE );
11071102
}
1108-
else if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
1109-
query.addEntity( "alias1", resultClass.getName(), LockMode.READ );
1110-
}
1111-
else if ( resultClass != Object.class && resultClass != Object[].class ) {
1112-
query.addScalar( 1, resultClass );
1113-
}
1114-
return query;
11151103
}
11161104

11171105
@Override

0 commit comments

Comments
 (0)