我对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
这是因为您的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