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