当前位置: 首页 > 面试题库 >

Spring Data MongoDB中具有List参数的存储库查询

隆芷阳
2023-03-14
问题内容

我有以下POJO。

@Document(collection = "questions")
public class Question {

    @Id
    private String id;

    public List<String> getTags() {
        return tags;
    }

    public void setTags(List<String> tags) {
        this.tags = tags;
    }
}

我正在尝试实现一个MongoRepository查询,该查询查找Question包含标签列表的所有。我尝试了以下方法:

@Repository
public interface QuestionRepository extends MongoRepository<Question, String> {
    List<Question> findByTags(List<String> tags);
}

但这仅在List我传递给该方法的标记的完全匹配在Mongo中分配给该问题的标记的列表时才有效。例如,如果我在Mongo中有一个带有标签列表的问题,当我传递给该方法时,[ "t1", "t2", "t3" ]它不会返回。findByTags(List)``[ "t1", "t2" ]

我也尝试了以下方法:

@Repository
public interface QuestionRepository extends MongoRepository<Question, String> {
    @Query("{ tags: { $all: ?0 } }")
    List<Question> findByTags(List<String> tags);
}

但是我war根本无法部署到我的servlet容器。(在这种情况下,我收到以下错误消息:

The web application [backend] appears to have started a thread named [cluster-1-db:27017] but has failed to stop it. This is very likely to create a memory leak.

您能否建议如何实施该自定义查询?


问题答案:

我将自己回答问题,因为我自己才找到答案。Spring Data MongoDB文档中的以下部分列出了Spring用于其查询派生的所有受支持的关键字:

http://docs.spring.io/spring-
data/mongodb/docs/current/reference/html/#repository-query-
keywords

以下实现适用于上述用例:

@Repository
public interface QuestionRepository extends MongoRepository<Question, String> {
     List<Question> findByTagsIn(List<String> tags);
}


 类似资料:
  • 问题内容: 我在我的应用程序中收到一个错误,我不知道如何解决它。这是代码: 我收到的错误是与。它说 InvalidCastException无法将参数值从任务转换为字符串。 我认为这与我尝试放置位置有关(在if语句内部),但我不确定。任何帮助将非常感激。 谢谢, 马特 问题答案: 我的猜测是 t不是字符串吗?

  • 我想使用Spring LDAP 设置多个 LDAP 存储库。我的目标是同时在所有存储库中创建或更新对象。 我使用LdapRepository Spring接口,我认为目前这是不可能的。 我想知道我是否可以创建自己的LdapRepository来扩展Spring,但是我不知道如何开始。 这是我的配置: 完整地说,一个存储库: 知道怎么做吗? 提前感谢任何帮助。

  • 问题内容: 我有一个表单,用户可以指定各种参数来挖掘某些数据(状态,日期等)。 我可以产生一个查询: 等等。每一个都是可选的(我可以选择带有的所有行,或者带有的所有行,或者带有etc的所有行)。 给定大量参数(全部为可选参数),组成动态存储过程的最佳方法是什么? 我正在处理各种数据库,例如:MySQL,Oracle和SQLServer。 问题答案: 实现此目的的最简单方法之一: 等等。这完全消除了

  • 问题内容: 我正在使用Sql Server2008。我的存储过程接受将近150个参数。在性能方面有什么问题吗? 问题答案: 在性能上没有错,但是闻起来可以用动态SQL更好地完成。不看代码很难说。

  • 我想使用带有注释@query的Jpa存储库创建一个连接查询。 我有两张桌子: 和: 我的表实体

  • 我读过一些关于在存储库请求中使用空值的帖子,但它们都已经存在多年了。所以我问这个问题是为了了解问题的现状。 我想说的是: 我想要一个带有可选空值的JPA请求。我的存储库中的函数如下所示: 这样我就可以像这样省略过滤器中的参数:(@Query的一部分) 这只在我的参数不为NULL时有效。 请注意,我在这里使用的是原生查询。(JPA实现是Hibernate,DB是postgres) 提前感谢您的每一次