Skip to content

DATAMONGO-1854 - Add support for Collation to repositories. #644

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 10 commits into from

Conversation

christophstrobl
Copy link
Member

We now allow to specify the collation via the @Query annotation or a Collation method argument.

public interface PersonRepository extends MongoRepository<Person, String> {

    @Query(collation = "en_US")
    List<Person> findByFirstname(String firstname);

    @Query(collation = "{ 'locale' : 'en_US' }")
    List<Person> findPersonByFirstname(String firstname);

    @Query(collation = "?1")
    List<Person> findByFirstname(String firstname, Object collation);

    @Query(collation = "{ 'locale' : '?1' }")
    List<Person> findByFirstname(String firstname, String collation);

    List<Person> findByFirstname(String firstname, Collation collation);
}

ℹ️ In case auto index creation is enabled for repository query methods, fixed collation values like the ones of the first 2 methods of the example above, are added to the index options.

christophstrobl and others added 9 commits April 10, 2019 13:52
We now allow to specify the collation via the @query annotation.

public interface PersonRepository extends MongoRepository<Person, String> {

	@query(collation = "en_US")
	List<Person> findByFirstname(String firstname);

	@query(collation = "{ 'locale' : 'en_US' }")
	List<Person> findPersonByFirstname(String firstname);

	@query(collation = "?1")
	List<Person> findByFirstname(String firstname, Object collation);

	@query(collation = "{ 'locale' : '?1' }")
	List<Person> findByFirstname(String firstname, String collation);

	List<Person> findByFirstname(String firstname, Collation collation);
}
…ethod.

We now make sure to include collation information derived from the Query method if the collation is a fixed value.
The collation can now also be configured on entity level and gets applied via MongoTemplate. However one can alway override a default collation by adding the collation explicitly to either the Query or one of the Options available for various operations.
When it comes to the repository level the hierarchy is method parameter over query annotation over entity metadata.
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# Fixed URLs

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://www.apache.org/licenses/ with 1 occurrences migrated to:
  https://www.apache.org/licenses/ ([https](https://www.apache.org/licenses/) result 200).
* [ ] http://www.apache.org/licenses/LICENSE-2.0 with 855 occurrences migrated to:
  https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0) result 200).

Original Pull Request: #710
@mp911de mp911de force-pushed the issue/DATAMONGO-1854 branch from e214c70 to a6dafc1 Compare April 10, 2019 14:05
Extract common collation resolution code into EntityOperations (TypedOperations).
mp911de pushed a commit that referenced this pull request Apr 23, 2019
…ion.

We now allow to specify the collation via the @query annotation.

public interface PersonRepository extends MongoRepository<Person, String> {

	@query(collation = "en_US")
	List<Person> findByFirstname(String firstname);

	@query(collation = "{ 'locale' : 'en_US' }")
	List<Person> findPersonByFirstname(String firstname);

	@query(collation = "?1")
	List<Person> findByFirstname(String firstname, Object collation);

	@query(collation = "{ 'locale' : '?1' }")
	List<Person> findByFirstname(String firstname, String collation);

	List<Person> findByFirstname(String firstname, Collation collation);
}

We now make sure to include collation information derived from the Query method if the collation is a fixed value.

Original pull request: #644.
mp911de added a commit that referenced this pull request Apr 23, 2019
Use ParameterBindingDocumentCodec to parse collation expressions.

Original pull request: #644.
mp911de pushed a commit that referenced this pull request Apr 23, 2019
The collation can now also be configured on entity level and gets applied via MongoTemplate. However one can alway override a default collation by adding the collation explicitly to either the Query or one of the Options available for various operations.
When it comes to the repository level the hierarchy is method parameter over query annotation over entity metadata.

Remove collation annotation in favor of attributes of Query / Document.

Original pull request: #644.
mp911de added a commit that referenced this pull request Apr 23, 2019
Extract common collation resolution code into EntityOperations (TypedOperations).

Original pull request: #644.
@mp911de
Copy link
Member

mp911de commented Apr 23, 2019

That's merged and polished now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants