Jpa 有没有一种方法可以转换spring数据存储库返回的对象?

Jpa 有没有一种方法可以转换spring数据存储库返回的对象?,jpa,spring-data,Jpa,Spring Data,现在我有一个实体对象和一个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。当我执行一个简单的示例(如:findById())时,存储库返回一个对象数组列表。是否有一种方法可以轻松地将返回类型映射为自定义DTO对象,而不是始终返回实体对象

示例如下:

@Query("Select f.id, f.name from Food f where f.id = :id")
public List<Object[]> findById(@Param("id") String id);
现在我只能让存储库返回一个列表类型。

试试这个

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

我从未在spring jpa中尝试过,但它在JPQL中工作,所以我假设它会工作XD

在从nativeQuery返回DTO时抛出异常
ORA-00923:FROM关键字not found where expected
,此功能仅在JPQL上下文“@Query(“Select new package.FoodDto(f.id,new package.OtherDto(f.name))from Food f其中f.id=:id”)下可用,我可以这样写吗?
@Query("Select new package.FoodDto(f.id, f.name) from Food f where f.id = :id")
public List<FoodDto> findById(@Param("id") String id);
public FoodDto(int id, String name){
 //Variable assignation
}