Consulta JPA de dados de primavera com propriedades de parâmetro

Qual é a maneira mais simples de declarar uma consulta JPA de dados do Spring que usa propriedades de um parâmetro de entrada como parâmetros de consulta?

Por exemplo, suponha que eu tenha uma classe de entidade:

public class Person {
    @Id
    private long id;

    @Column
    private String forename;

    @Column
    private String surname;
}

e outra classe:

public class Name {
    private String forename;
    private String surname;

    [constructor and getters]
}

... então eu gostaria de escrever um repositório de dados do Spring da seguinte forma:

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);
}

... mas os dados do Spring / JPA não gostam de eu especificar nomes de propriedades no?1 parâmetro.

Qual é a melhor alternativa? }

questionAnswers(9)

yourAnswerToTheQuestion