当前位置: 首页 > 知识库问答 >
问题:

Spring Boot 1.5.10 to 2.0 Spring Data Mongo@Query

诸葛立果
2023-03-14

我对Spring Boot 1.5.10到2.0的迁移有最后一个问题。用@Query注释的查询不再工作。在1.5.10中,这些工作正常:以下是查询和实体:

@Document(collection = "credentials")
public class Credentials implements Serializable, Comparable<Credentials>
{

    private static final long serialVersionUID = -921533822040690113L;

    @Id
    private UUID id;

    @Indexed
    @Field("userId")
    private UUID userId;

    @Field("access")
    private List<Access> access;

    @Field("roles")
    private List<String> roles;

    /**
     * @return the id
     */
    public UUID getId()
    {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(UUID id)
    {
        this.id = id;
    }

    /**
     * @return the userId
     */
    public UUID getUserId()
    {
        return userId;
    }

    /**
     * @param userId the userId to set
     */
    public void setUserId(UUID userId)
    {
        this.userId = userId;
    }

    /**
     * @return the access
     */
    public List<Access> getAccess()
    {
        return access;
    }

    /**
     * @param access the access to set
     */
    public void setAccess(List<Access> access)
    {
        this.access = access;
    }

    /**
     * @return the roles
     */
    public List<String> getRoles()
    {
        return roles;
    }

    /**
     * @param roles the roles to set
     */
    public void setRoles(List<String> roles)
    {
        this.roles = roles;
    }

    /**
     *
     */
    public Credentials()
    {}

问题是:

public interface ICredentialsRepository extends MongoRepository<Credentials, UUID>
{

    /**
     * This query finds the credentials by userId
     * @param userId user identification
     * @return Credentials object
     */
    @Query("{ 'userId' : ?0}")
    Credentials retrieveWithUserId(UUID userId);
}

现在运行这个时,我得到了一个错误

com.mongodb.MongoQueryException: Query failed with error code 2 and error message 'unknown operator: $uuid' on server

同样,这在Spring Boot 1.5.10中运行得非常好。该项目包括spring-boot-starter-data-mongodb-2.0.0和spring-boot-configuration-processor-2.0.0

共有1个答案

苍和裕
2023-03-14

这是因为您的UUID它不是实体/文档类型。您应该在UUID类上使用@文档,在UUID类上使用@嵌入式和@嵌入式可在凭据类中UUID引用。

 类似资料:
  • 问题内容: 我阅读了[如何在QueryParser中合并多个字段?](http://codingdict.com/questions/136407但是我不明白。 目前,我有一个非常奇怪的结构,例如: 我该怎么办? 因此解析器会在“ bodytext”字段和“ title”字段中寻找搜索词。 问题答案: 有3种方法可以做到这一点。 第一种方法是手动构造查询,这是内部的工作。这是执行此操作最强大的方法

  • 问题内容: 有人可以向我指出一些有关可用于Java的不同查询DSL库之间的性能比较的资源,例如: Querydsl , jOOQ , JEQUEL , activejdbc , iciql 等。 背景: 我正在使用Spring JDBC模板,但是仍然需要以纯字符串格式编写查询。尽管我在编写直接查询时没有问题,但是我担心直接依赖于数据库表名。我不想使用任何ORM框架,例如Hibernate或JPA

  • 问题内容: 我正在使用spring-data-jpa和querydsl(3.2.3) ,有一种情况是我根据用户文件管理器/输入创建谓词集。所有这些都来了。 我的简化模型如下所示: 现在,我正在努力的是这个查询: 因此,基本上我需要以类似的格式进行子查询,该格式将获取所有公司编号并将其设置为in()表达式。 我的spring- data存储库实现了反过来扩展和的工具。 我希望答案很简单,但是我对qu

  • 问题内容: JAX-RS 和 之间有什么区别?从文档中,queryparam和matrixparam都可以在特殊条件下定位一个资源。那么用例有什么区别? ps: Queryparam: 矩阵参数 问题答案: 如本Oracle文档所述: 在和其他基于参数的注解, ,,,遵守同样的规则。从URL路径段中提取信息。从HTTP标头中提取信息。从与Cookie相关的HTTP标头中声明的Cookie中提取信息

  • 问题内容: 我正在使用’Lucene.Net’库,并且有以下问题。 不是创建两个单独的QueryParser对象并使用它们来获得两个Hits对象,而是可以使用一个QueryParser对象在两个字段上进行搜索,这样我只有一个Hits对象,它可以为我提供每个文档的总体得分? 问题答案: 有3种方法可以做到这一点。 第一种方法是手动构造查询,这是QueryParser内部的工作。这是执行此操作最强大的

  • 问题内容: 我试图过滤/修改Post和Put调用,以确保从HTML和JS代码中过滤出用户提供的所有参数,以防止XSS攻击。我想确保这是在API级别上实现的,因此无论使用什么客户端,它都将受到保护。 对于Jersey 1.x,可以通过实现ContainerRequestFilter并在将它们与请求的servlet匹配之前修改request.getQueryParameters()来实现。示例:htt

  • 问题内容: 我在SpringData中使用QueryDSL。我说表,我创建了实体类, 我写了以下 服务 方法 如上所述,我评论了。如何使用 QueryDSL 在可选参数 QueryDSL 使用Spring的数据? 谢谢 :) 问题答案: 可以用作布尔表达式的动态生成器:

  • 问题内容: MyBatis提供了映射,本地缓存和开箱即用的功能。 QueryDSL / jOOQ提供了SQL语句的编译时检查和IDE自动完成的结果。 是否可以将它们组合在一起? 换句话说, 我想使用QueryDSL或jOOQ创建一个查询,然后使用MyBatis用一些粘合代码/适配器执行它 。 我已经检查过的内容: 我考虑过使用QueryDSL生成SQL查询字符串,并在MyBatis中使用它的’@S