Avoid long method names
findFirst20ByAddresses_ProvinceContainingAndAgeBetween
The method name above is a bit long under the premise that it improves readability.
Long method names is an indicator we are trying to do a lot or too much in one method and it is a code smell.
Long method names only allowed when wring a test method.
A method should have a maximum of two parameters.
Where you have more than two params use JPQL @Query.
But @Query may also not be the best option to specify very complex queries
Prefer bind parameters over inline params, as they avoid SQL injections. They also allow automatic conversion to correct SQL types. Finally, they enable JPA provider and database to optimise the query for you.