Skip to content

[Spring Data Cosmos] Fix GROUP BY aggregate query exception (#43912)#48786

Draft
jeet1995 wants to merge 1 commit intoAzure:mainfrom
jeet1995:squad/43912-spring-groupby-aggregates
Draft

[Spring Data Cosmos] Fix GROUP BY aggregate query exception (#43912)#48786
jeet1995 wants to merge 1 commit intoAzure:mainfrom
jeet1995:squad/43912-spring-groupby-aggregates

Conversation

@jeet1995
Copy link
Copy Markdown
Member

Issue

Fixes #43912

Problem

@query\ methods with GROUP BY + aggregates (COUNT, SUM) crash with \IllegalArgumentException: Entity is null\ in \MappingCosmosConverter.readInternal()\ when the return type is not a Cosmos-mapped entity (e.g., \ObjectNode, \Map, DTO).

Fix

Replaced the hard assertion in \MappingCosmosConverter.read()\ with a graceful fallback to direct Jackson deserialization via \objectMapper.treeToValue()\ when the mapping context has no persistent entity for the target type. This enables non-entity return types for aggregate queries without affecting existing entity-mapped queries.

Testing

  • 4 new unit tests covering ObjectNode, Map, DTO, and Object return types
  • All existing tests pass

Supported return types after fix

  • \List\
  • \List\
  • \List\
  • \List\

…n types (Azure#43912)

MappingCosmosConverter.read() crashed with 'Entity is null' when the return
type was not a Cosmos-mapped entity (ObjectNode, Map, DTO, Object). The
mapping context either returned null or threw when introspecting non-entity
classes.

Changes:
- Guard mappingContext.getPersistentEntity() with try-catch in read() so
  non-entity types fall through with null entity
- Replace Assert.notNull(entity) in readInternal() with graceful fallback
  to direct Jackson deserialization via objectMapper.treeToValue()
- Add AggregateDto test domain class for non-entity deserialization
- Add 4 unit tests: ObjectNode, Map, plain DTO, and Object return types
- Update CHANGELOG.md with bug fix entry

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions bot added the azure-spring All azure-spring related issues label Apr 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

azure-spring All azure-spring related issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Query with aggregates and GROUP BY works Azure Data Studio but generates an exception with spring-data-cosmos

1 participant