Ensure findByIdOrNull respects AOP on overridden repository methods. #3356
+27
−2
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.
This PR ensures that the
findByIdOrNull
Kotlin extension correctly respects AOP annotations on user-overridden repository methods.Problem
The
findByIdOrNull
Kotlin extension was not declared as aninline
function. This caused the call to bind to the genericCrudRepository.findById(Object)
method at compile time, which bypasses any AOP proxies on user-overridden repository methods with specific types (e.g.,findById(String)
). As a result, annotations like@Cacheable
or@EntityGraph
were silently ignored.Solution
By declaring the extension function as
inline
, the function body is inlined at the call site. This change ensures that the Kotlin compiler resolves the call to the most specific, user-definedfindById
method. Consequently, the call correctly goes through the AOP proxy, allowing features like caching or entity graphs to be applied as expected.An accompanying unit test has been added to
CrudRepositoryExtensionsTests
to verify this fix, usingProxyFactory
to simulate the AOP behavior.Resolved: #3326