Skip to content

Commit b20461c

Browse files
committed
Recursively check embedded property loading.
Also, avoid falling back into hasValue(…) code path. See #1676 Original pull request: #1685
1 parent e5bcc4a commit b20461c

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/MappingRelationalConverter.java

+6-9
Original file line numberDiff line numberDiff line change
@@ -552,16 +552,15 @@ private Object readEmbedded(ConversionContext conversionContext, RelationalPrope
552552
RowDocumentAccessor source, RelationalPersistentProperty property,
553553
RelationalPersistentEntity<?> persistentEntity) {
554554

555-
if (shouldReadEmbeddable(conversionContext, property, persistentEntity, provider, source)) {
555+
if (shouldReadEmbeddable(conversionContext, property, persistentEntity, provider)) {
556556
return read(conversionContext, persistentEntity, source);
557557
}
558558

559559
return null;
560560
}
561561

562562
private boolean shouldReadEmbeddable(ConversionContext context, RelationalPersistentProperty property,
563-
RelationalPersistentEntity<?> unwrappedEntity, RelationalPropertyValueProvider propertyValueProvider,
564-
RowDocumentAccessor source) {
563+
RelationalPersistentEntity<?> unwrappedEntity, RelationalPropertyValueProvider propertyValueProvider) {
565564

566565
OnEmpty onEmpty = property.getRequiredAnnotation(Embedded.class).onEmpty();
567566

@@ -576,16 +575,14 @@ private boolean shouldReadEmbeddable(ConversionContext context, RelationalPersis
576575

577576
if (persistentProperty.isEmbedded()) {
578577

579-
TypeInformation<?> typeInformation = persistentProperty.getTypeInformation();
578+
RelationalPersistentEntity<?> nestedEntity = getMappingContext()
579+
.getRequiredPersistentEntity(persistentProperty);
580580

581-
RelationalPersistentEntity<?> nestedEntity = getMappingContext().getPersistentEntity(typeInformation);
582-
583-
if (readEmbedded(nestedContext, contextual, source, persistentProperty, nestedEntity) != null) {
581+
if (shouldReadEmbeddable(nestedContext, persistentProperty, nestedEntity, contextual)) {
584582
return true;
585583
}
586-
}
587584

588-
if (contextual.hasValue(persistentProperty)) {
585+
} else if (contextual.hasValue(persistentProperty)) {
589586
return true;
590587
}
591588
}

0 commit comments

Comments
 (0)