Spring data JPA query with parameter properties
jpa, spring, spring-data, spring-data-jpa
Solution
This link will help you: `Spring Data JPA` M1 with `SpEL` expressions supported. The similar example would be:
@Query("select u from User u where u.firstname = :#{#customer.firstname}")
List<User> findUsersByCustomersFirstname(@Param("customer") Customer customer);
For more details see: SpEL support in Spring Data JPA @Query definitions
Problem
What is the simplest way of declaring a Spring data JPA query that uses properties of an input parameter as query parameters? For example, suppose I have an entity class: ``` public class Person { @Id private long id; @Column private String forename; @Column private String surname; } ``` and another class: ``` public class Name { private String forename; private String surname; [constructor and getters] } ``` ... then I would like to write a Spring data repository as follows: ``` public interface PersonRepository extends CrudRepository<Person, Long> { @Query("select p from Person p where p.forename = ?1.forename and p.surname = ?1.surname") findByName(Name name); } ``` ... but Spring data / JPA doesn't like me specifying property names on the `?1` parameter. What is the neatest alternative?