一尘不染

具有参数属性的Spring数据JPA查询

spring

声明使用输入参数的属性作为查询参数的Spring数据JPA查询的最简单方法是什么?

例如,假设我有一个实体类:

public class Person {
    @Id
    private long id;

    @Column
    private String forename;

    @Column
    private String surname;
}

和另一类:

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

    [constructor and getters]
}

…那么我想编写一个Spring数据存储库,如下所示:

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

…但是Spring数据/ JPA不喜欢我在?1参数上指定属性名称。

什么是最巧妙的选择?


阅读 508

收藏
2020-04-14

共1个答案

一尘不染

该链接将为你提供帮助:支持SpEL表达式的Spring Data JPA M1。类似的例子是:

@Query("select u from User u where u.firstname = :#{#customer.firstname}")
List<User> findUsersByCustomersFirstname(@Param("customer") Customer customer);
2020-04-14