在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。
请让我知道任何可能性
先谢谢
答案 0 :(得分:0)
只需使用CountyVO
作为返回类型:
@Query(value = "{}", fields = "{'id':1,'name':1}")
List<CountryVO> getAllCountries();