【问题标题】:Projection on a MongoDb Query using Spring data and QueryDSL使用 Spring 数据和 QueryDSL 对 MongoDb 查询进行投影
【发布时间】:2012-07-26 04:35:24
【问题描述】:

我有一个 Spring MVC/Spring Data/Mongo DB 应用程序。 我已经根据 spring 数据文档设置了我的环境,并且我的存储库工作正常(我可以使用谓词执行查询)

我想知道是否可以在进行投影时执行类型安全查询(使用 Spring Data 和 QueryDSL)(我只想要一个非常大的文档的几个字段)。

QueryDSL 文档给出了 Hibernate 的示例,但声明它可以在所有模块中完成 QueryDSL Documentation (但我无法找到如何使用 Mongo 来完成)

这里是休眠的代码 sn-p

class CustomerDTO {

  @QueryProjection
  public CustomerDTO(long id, String name){
     ...
 }

 QCustomer customer = QCustomer.customer;
 JPQLQuery query = new HibernateQuery(session);
 List<CustomerDTO> dtos = qry.from(customer).list(new QCustomerDTO(customer.id,    customer.name));     

有什么想法吗?

【问题讨论】:

    标签: spring mongodb projection spring-data


    【解决方案1】:

    我刚刚建立了一个这样的投影:

    Criteria c1 = Criteria.where("field.name").is("val")
    Criteria projection = Criteria.where("field").is(1)
    BasicQuery query = new BasicQuery(c1.getCriteriaObject(), projection.getCriteriaObject())
    

    【讨论】:

    • 这不是类型安全的,也不是您使用 QueryDSL 框架,您使用的是标准 Spring Data 对象。
    【解决方案2】:

    目前不支持此功能。随时将它的票添加到我们的Issue tracker

    Querydsl 的 Lucene 和 Mongodb 模块仅支持来自查询根的直接投影,但对于自定义投影,可以解决一些问题。

    【讨论】:

    • 问题created,感谢您的建议。
    • 刚刚收到一封电子邮件,表明此功能现已在 QueryDSL 框架中实现!好消息!
    • 只有 Morphia 支持吗?我们使用 Spring 数据。
    • 如果我们有另一个 Spring Data 框架的实现就好了。因为出于某种原因我不得不放弃 Morphia stackoverflow.com/a/41393517/413032
    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 2014-08-01
    • 2017-10-31
    • 2023-01-14
    • 2018-11-05
    • 2011-03-30
    相关资源
    最近更新 更多