如何使用Spring Data MongoDB从Entity到VO对象获取必需的字段数据

时间:2015-02-20 10:44:36

标签: java spring mongodb spring-data-jpa spring-data-mongodb

在Spring Data Jpa中,我们可以灵活地将必需的字段查询结果映射到VO对象,而不会将实体对象暴露在外面。

DB Used :: mysql

第一路::

@Query("SELECT new CountryVO(c.id,c.name) FROM Country c")
public List<CountryVO> getCountries();

//国家/地区实体

public class Country{
    private long id;
    private String name;
    @DBRef 
    private State state;
}    

//州实体

   public class State{
       private long id;
       private String name;
   }  

//国家/地区VO

public class CountryVO{
    private long id;
    private String name;
    private String stateName;
}

第二路::

@Query("SELECT DISTINCT c.name FROM Country c")
public List<String> getNames();

现在我的观点是我正在使用带有mongoDB数据库的Spring Data mongoDB,这里的查询方式与下面不同

@Query(value = "{}", fields = "{'id':1,'name':1,'state.name':1}")
List<CountryVO> getAllCountries();

在上面的查询中,我们可以在fields属性中提到我们想要的字段,剩下的字段将作为空值,但我想将输出结果映射到像Spring Data Jpa这样的VO。

请让我知道任何可能性

先谢谢

1 个答案:

答案 0 :(得分:0)

只需使用CountyVO作为返回类型:

@Query(value = "{}", fields = "{'id':1,'name':1}")
List<CountryVO> getAllCountries();