Handle top-level collections without entity lookup in MappingRedisConverter #2168 #3146
+14
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix. #2168
Summary
This issue arises in
MappingRedisConverter.write(…)
, which by default treats all inputs—including JDK internal types likeArrays.asList(...)
—as domain entities. It looks up aPersistentEntity
for every input and then retrieves metadata (keyspace, identifier, TTL). On Java 9+ this leads to anInaccessibleObjectException
when reflection tries to access the non-exported constructor ofArrays$ArrayList.
To address this, I added an early check in write(...):
This skips all metadata lookups for top-level collections by directly invoking
writeCollection(...)
.I removed the
@EnabledOnJre(JRE.JAVA_8)
restriction on thewritePlainList()
test (now annotated // GH-2168) and verified that it passes on non–Java 8 environments.