2014-03-12 59 views
4

现在我有一个实体对象和一个DTO。当我做一个简单的例子时,知识库返回对象数组列表:findById()。有没有一种方法可以轻松地将返回类型映射为自定义DTO对象,而不是始终返回实体对象?有没有办法转换弹簧数据存储库返回的对象?

示例如下:

@Query("Select f.id, f.name from Food f where f.id = :id") 
public List<Object[]> findById(@Param("id") String id); 

我的DTO对象的样子:

FoodDto{ 
    private String id; 
    private String name; 
} 

现在我只去过能够得到库返回一个列表<对象[]>类型。

回答

20

试试这个。

@Query("Select new package.FoodDto(f.id, f.name) from Food f where f.id = :id") 
public List<FoodDto> findById(@Param("id") String id); 

假设类FoodDto在包中,如果没有,您需要设置完整的包。

我也承担FoodDto有匹配

public FoodDto(int id, String name){ 
//Variable assignation 
} 
一个构造函数

我从来没有在春天JPA的尝试,但该作品在JPQL,所以我认为它会工作XD

+0

为我工作! –

+0

从nativeQuery返回DTO时抛出异常'ORA-00923:FROM keyword not found where'where'。 – masT

+0

将你的查询粘贴到这里 – Koitoer

相关问题