Skip to content

Commit cd7851a

Browse files
committed
Support for simple natural id loader
1 parent c401b39 commit cd7851a

12 files changed

+725
-46
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/* Hibernate, Relational Persistence for Idiomatic Java
2+
*
3+
* SPDX-License-Identifier: Apache-2.0
4+
* Copyright: Red Hat Inc. and Hibernate Authors
5+
*/
6+
package org.hibernate.reactive.loader.ast.internal;
7+
8+
import java.util.concurrent.CompletionStage;
9+
import java.util.function.BiConsumer;
10+
import java.util.function.Consumer;
11+
12+
import org.hibernate.engine.spi.SharedSessionContractImplementor;
13+
import org.hibernate.loader.ast.internal.CompoundNaturalIdLoader;
14+
import org.hibernate.loader.ast.internal.LoaderSqlAstCreationState;
15+
import org.hibernate.loader.ast.spi.NaturalIdLoadOptions;
16+
import org.hibernate.metamodel.mapping.EntityMappingType;
17+
import org.hibernate.metamodel.mapping.internal.CompoundNaturalIdMapping;
18+
import org.hibernate.reactive.loader.ast.spi.ReactiveNaturalIdLoader;
19+
import org.hibernate.sql.ast.tree.from.TableGroup;
20+
21+
public class ReactiveCompoundNaturalIdLoader<T> extends CompoundNaturalIdLoader implements ReactiveNaturalIdLoader {
22+
23+
private final ReactiveNaturalIdLoaderDelegate<T> delegate;
24+
25+
public ReactiveCompoundNaturalIdLoader(
26+
CompoundNaturalIdMapping naturalIdMapping,
27+
EntityMappingType entityDescriptor) {
28+
super( naturalIdMapping, entityDescriptor );
29+
delegate = new ReactiveNaturalIdLoaderDelegate<>( naturalIdMapping, entityDescriptor ) {
30+
@Override
31+
protected void applyNaturalIdRestriction(
32+
Object bindValue,
33+
TableGroup rootTableGroup,
34+
Consumer consumer,
35+
BiConsumer jdbcParameterConsumer,
36+
LoaderSqlAstCreationState sqlAstCreationState,
37+
SharedSessionContractImplementor session) {
38+
ReactiveCompoundNaturalIdLoader.this.applyNaturalIdRestriction(
39+
bindValue,
40+
rootTableGroup,
41+
consumer,
42+
jdbcParameterConsumer,
43+
sqlAstCreationState,
44+
session
45+
);
46+
}
47+
};
48+
}
49+
50+
@Override
51+
public CompletionStage<Object> resolveNaturalIdToId(
52+
Object naturalIdValue,
53+
SharedSessionContractImplementor session) {
54+
return delegate.resolveNaturalIdToId( naturalIdValue, session );
55+
}
56+
57+
@Override
58+
public CompletionStage<Object> resolveIdToNaturalId(Object id, SharedSessionContractImplementor session) {
59+
return delegate.resolveIdToNaturalId( id, session );
60+
}
61+
62+
@Override
63+
public CompletionStage<T> load(
64+
Object naturalIdValue,
65+
NaturalIdLoadOptions options,
66+
SharedSessionContractImplementor session) {
67+
return delegate.load( naturalIdValue, options, session );
68+
}
69+
}

0 commit comments

Comments
 (0)