Avoid creating invalid index definitions for Map-like properties.
This commit makes sure to exclude Map like structures from index inspection unless annotated with WilcardIndexed. Closes #3914, closes #3901 Original pull request: #3915.
This commit is contained in:
committed by
Mark Paluch
parent
9c78802c47
commit
e0a57fa19b
@@ -402,12 +402,17 @@ Indexes are automatically created for the initial entity set on application star
|
||||
|
||||
We generally recommend explicit index creation for application-based control of indexes as Spring Data cannot automatically create indexes for collections that were recreated while the application was running.
|
||||
|
||||
`IndexResolver` provides an abstraction for programmatic index definition creation if you want to make use of `@Indexed` annotations such as `@GeoSpatialIndexed`, `@TextIndexed`, `@CompoundIndex`.
|
||||
`IndexResolver` provides an abstraction for programmatic index definition creation if you want to make use of `@Indexed` annotations such as `@GeoSpatialIndexed`, `@TextIndexed`, `@CompoundIndex` and `@WildcardIndexed`.
|
||||
You can use index definitions with `IndexOperations` to create indexes.
|
||||
A good point in time for index creation is on application startup, specifically after the application context was refreshed, triggered by observing `ContextRefreshedEvent`.
|
||||
This event guarantees that the context is fully initialized.
|
||||
Note that at this time other components, especially bean factories might have access to the MongoDB database.
|
||||
|
||||
[WARNING]
|
||||
===
|
||||
`Map` like structures, unless annotated with `@WildcardIndexed`, are skipped by the `IndexResolver` because the _map key_, which cannot be resolved from static metadata, needs to be part of the index definition.
|
||||
===
|
||||
|
||||
.Programmatic Index Creation for a single Domain Type
|
||||
====
|
||||
[source,java]
|
||||
|
||||
Reference in New Issue
Block a user