mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-28 14:59:12 +00:00
HHH-15606 @OneToOne(mappedBy = ..., fetch = LAZY) in embedded leads to IllegalArgumentException: Can not set [...] to LazyPropertyInitializer
This commit is contained in:
parent
a2a2a83684
commit
2171d3b24a
@ -23,6 +23,7 @@
|
||||
import org.hibernate.sql.results.graph.AbstractFetchParentAccess;
|
||||
import org.hibernate.sql.results.graph.DomainResultAssembler;
|
||||
import org.hibernate.sql.results.graph.FetchParentAccess;
|
||||
import org.hibernate.sql.results.graph.embeddable.EmbeddableInitializer;
|
||||
import org.hibernate.sql.results.graph.entity.AbstractEntityInitializer;
|
||||
import org.hibernate.sql.results.graph.entity.EntityInitializer;
|
||||
import org.hibernate.sql.results.graph.entity.LoadingEntityEntry;
|
||||
@ -110,11 +111,10 @@ public void resolveInstance(RowProcessingState rowProcessingState) {
|
||||
}
|
||||
}
|
||||
if ( entityInstance == null ) {
|
||||
if ( referencedModelPart.isOptional() && parentAccess != null && parentAccess.getInitializedPart()
|
||||
.findContainingEntityMapping()
|
||||
.getEntityPersister()
|
||||
.getBytecodeEnhancementMetadata()
|
||||
.isEnhancedForLazyLoading() ) {
|
||||
if ( referencedModelPart.isOptional()
|
||||
&& parentAccess != null
|
||||
&& !parentAccess.isEmbeddableInitializer()
|
||||
&& isEnhancedForLazyLoading( parentAccess ) ) {
|
||||
entityInstance = LazyPropertyInitializer.UNFETCHED_PROPERTY;
|
||||
}
|
||||
else {
|
||||
@ -138,9 +138,9 @@ public void resolveInstance(RowProcessingState rowProcessingState) {
|
||||
final PersistenceContext persistenceContext = session.getPersistenceContextInternal();
|
||||
entityInstance = persistenceContext.getEntity( euk );
|
||||
if ( entityInstance == null ) {
|
||||
if ( ( (AbstractEntityInitializer) this.parentAccess.findFirstEntityDescriptorAccess() ).getEntityDescriptor()
|
||||
.getBytecodeEnhancementMetadata()
|
||||
.isEnhancedForLazyLoading() ) {
|
||||
if ( parentAccess != null
|
||||
&& !parentAccess.isEmbeddableInitializer()
|
||||
&& isEnhancedForLazyLoading( parentAccess ) ) {
|
||||
return;
|
||||
}
|
||||
entityInstance = ( (UniqueKeyLoadable) concreteDescriptor ).loadByUniqueKey(
|
||||
@ -179,6 +179,11 @@ public void resolveInstance(RowProcessingState rowProcessingState) {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isEnhancedForLazyLoading(FetchParentAccess parentAccess) {
|
||||
return parentAccess.findFirstEntityInitializer().getEntityDescriptor().getBytecodeEnhancementMetadata()
|
||||
.isEnhancedForLazyLoading();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initializeInstance(RowProcessingState rowProcessingState) {
|
||||
// nothing to do
|
||||
|
Loading…
x
Reference in New Issue
Block a user