【问题标题】:How to get the required fields data from an Entity to VO object using Spring Data MongoDB如何使用 Spring Data MongoDB 从实体获取所需字段数据到 VO 对象
【发布时间】:2015-02-20 10:44:35
【问题描述】:

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

使用的数据库 :: 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;
   }  

//国家配音

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

第二种方式::

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

现在我的意思是我使用 Spring Data mongoDB 和 mongoDB 数据库,这里的查询方式不同,如下所示

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

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

请告诉我任何可能性

提前致谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 这对于第一级变量工作正常,但对于引用的文档在查询中得到空值。请看这个问题的编辑版本
    • 好吧,这个编辑完全改变了画面。 MongoDB 不支持数据库级别的连接,所以这不起作用。
    猜你喜欢
    • 1970-01-01
    • 2015-03-23
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2015-04-19
    • 1970-01-01
    • 2015-05-31
    相关资源
    最近更新 更多