Manuel Núñez created IGNITE-13005:
-------------------------------------

             Summary: Spring Data 2 - JPA Improvements and working with 
multiple Ignite instances on same JVM
                 Key: IGNITE-13005
                 URL: https://issues.apache.org/jira/browse/IGNITE-13005
             Project: Ignite
          Issue Type: Improvement
          Components: spring
    Affects Versions: 2.7.6
            Reporter: Manuel Núñez
            Assignee: Ilya Kasnacheev


I have it working for Spring Data 2 (2.7.6) module with some interesting 
improvements, but by now I don't have enough time to give it the attention it 
requires, full unit/integration tests..., sorry a lot. ¿maybe any of you have 
the time?. Thanks community!!

Code is 100% compatible with previous versions. 
[https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
 * Supports multiple ignite instances on same JVM (@RepositoryConfig).
 * Supports query tuning parameters in {{@Query}} annotation
 * Supports projections
 * Supports {{Page}} and {{Stream}} responses
 * Supports Sql Fields Query resultset transformation into the domain entity
 * Supports named parameters ({{:myParam}}) into SQL queries, declared using 
{{@Param("myParam")}}
 * Supports advanced parameter binding and SpEL expressions into SQL queries:
 ** *Template variables*:
 *** {{#entityName}} - the simple class name of the domain entity
 ** *Method parameter expressions*: Parameters are exposed for indexed access 
({{[0]}} is the first query method's param) or via the name declared using 
{{@Param}}. The actual SpEL expression binding is triggered by {{?#}}. Example: 
{{?#{[0]}}} or {{?#{#myParamName}}}
 ** *Advanced SpEL expressions*: While advanced parameter binding is a very 
useful feature, the real power of SpEL stems from the fact, that the 
expressions can refer to framework abstractions or other application components 
through SpEL EvaluationContext extension model.
 * Supports SpEL expressions into Text queries ({{TextQuery}}). Examples:

{code:java}
 @Query(value = "SELECT * from #{#entityName} where email = :email")
 User searchUserByEmail(@Param("email") String email);

 @Query(value = "SELECT * from #{#entityName} where country = ?#{[0] and city = 
?#{[1]}")
 List<User> searchUsersByCity(@Param("country") String country, @Param("city") 
String city, Pageable pageable);

@Query(value = "SELECT * from #{#entityName} where email = ?")
 User searchUserByEmail(String email);

@Query(value = "SELECT * from #{#entityName} where uuidCity = ?#{
mySpELFunctionsBean.cityNameToUUID(#city)}")
List<User> searchUsersByCity(@Param("city") String city, Pageable pageable); 

@Query(textQuery = true, value = "email: #{#email}")
User searchUserByEmail(@Param("email") String email);

@Query(textQuery = true, value = "#{#textToSearch}")
List<User> searchUsersByText(@Param("textToSearch") String text, Pageable 
pageable);

@Query(textQuery = true, value = "#{[0]}")
List<User> searchUsersByText(String textToSearch, Pageable pageable);
{code}
 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to