Java spring数据投影的返回类型

Java spring数据投影的返回类型,java,spring,projection,Java,Spring,Projection,我不熟悉使用弹簧投影。这就是我面临的问题: 这些是我的域类、投影、控制器、测试方法: public class S{ private int id; private String name; private String state; ... } public interface sProjection{ public int getId(); public int getName(); } repository method : publi

我不熟悉使用弹簧投影。这就是我面临的问题: 这些是我的域类、投影、控制器、测试方法:

public class S{
    private int id;
    private String name;
    private String state;
    ...
}

public interface sProjection{
    public int getId();
    public int getName();
}

repository method : 
public List<sProjection> findByState(String state);

controller :
@GetMapping("/list")
public List<sProjection> scopeList(){
    List<sProjection> sThumbNailList = findByState("Protected")
    return sThumbNailList;
}

Test method :
@Test
public void testGet(){
    ResponseEntity<List<sProjection>> responseEntity = this.restTemplate.exchange("/webapi/s/list", HttpMethod.GET, null,  new ParameterizedTypeReference<List<sProjection>>() {});
}
公共类S{
私有int-id;
私有字符串名称;
私有字符串状态;
...
}
公共接口投影{
public int getId();
public int getName();
}
存储库方法:
公共列表findByState(字符串状态);
控制器:
@GetMapping(“/list”)
公共列表范围列表(){
List sThumbNailList=findByState(“受保护”)
返回列表;
}
试验方法:
@试验
公共void testGet(){
ResponseEntity ResponseEntity=this.restTemplate.exchange(“/webapi/s/list”,HttpMethod.GET,null,新参数化类型引用(){});
}
我遇到的问题是,在测试方法中,我得到了一个错误,因为
sproject
是一个不能实例化的接口。有人知道有什么替代方案吗?
我尝试改为使用
List
,但
List.get
为我获取一个LinkedHashMap,而不是我可以强制转换到的对象(SProject)。以前有人遇到过这个问题并找到了解决方案吗?

你能提供实际的stacktrace吗?幕后的Spring data jpa提供了一个封装Sproject的代理,而rest模板只是试图根据你提供的响应类型构造一个类型。如果SProject是一个接口,则无法实例化它如果您正在谈论Spring数据投影,则需要在
interface PersonRepository extensed crudepository{noaddress findByFirstName(String firstName);}