Spring 数据 JPA 投影 - 获取投影列的所有行

问题描述

我正在尝试使用 Spring 数据 JPA 投影来获取数据库中的特定列。在我的设置中,我的实体类具有代表列的字段,并且我创建了一个视图来获取投影数据。我在在存储库类中创建方法时遇到问题。我想获取该视图的数据库中的所有行(我不想进行查询,例如 getPersonViewById),但 Spring 抱怨:

java.lang.IllegalArgumentException: Failed to create query for method

当我将 Repository 中的方法更改为 getPersonViewById() 时,它工作正常。

知道如何在存储库类中查询吗?这是我的代码

@Entity
public class Person {
    
    @Id
    @Column (name = "id")
    private final UUID id;
    
    @Column (name = "name")
    private String name;
    
    @Column (name = "address")
    private String address;
    
    public UUID getId () {
        return id;
    }
    
    public String getName () {
        return name;
    }
    
    public interface PersonView {
        String getName();
        String getId();
    }
    
}

@Repository
public interface PersonRepository extends Repository<Person,Long> {
    List<PersonView> getPersonView ();
}

解决方法

我找到了答案。如果我使用 getPersonViewBy(),方法名称中的 'By' 后没有任何内容,它将返回所有行。