Spring Boot 中的 com.mongodb.util.JSONParseException?
Posted
技术标签:
【中文标题】Spring Boot 中的 com.mongodb.util.JSONParseException?【英文标题】:com.mongodb.util.JSONParseException in Spring Boot? 【发布时间】:2018-05-17 17:04:54 【问题描述】:我尝试使用 @Query 注释创建自定义查询。但它会引发一些错误。
这是我的仓库
package com.springboot.springmongodb.user;
import java.util.List;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
public interface UserRepository extends CrudRepository<User, String>
@Override
User findOne(String id);
@Transactional(readOnly=false)
@Query("SELECT user FROM User user WHERE user.username = :username")
public List<User> findByUsername(@Param("username") String username);
我想为检查用户名创建自定义查询。
这是我得到的错误。
2017-12-04 14:46:10.413 警告 1452 --- [主要] ationConfigEmbeddedWebApplicationContext:遇到异常 在上下文初始化期间 - 取消刷新尝试: org.springframework.beans.factory.BeanCreationException:错误 创建类中定义的名称为“springSecurityFilterChain”的bean 路径资源 [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [javax.servlet.Filter]:工厂方法 'springSecurityFilterChain' 抛出异常;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“userDetailsService”的 bean 时出错:不满意 通过字段“userRep”表示的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“userRepository”的bean:调用init方法 失败的;嵌套异常是 com.mongodb.util.JSONParseException: SELECT user FROM User user WHERE user.username = :username ^
【问题讨论】:
你能告诉我们完整的例外吗? 您似乎将 SQL Query 声明为 mongodb。 mongo 查询应如下所示:@Query(" 'firstname' : ?0 ")
更新了我的完整例外@YCF_L
你会尝试编码格式化吗?换行符肯定不是原创的。
是的,我对 *** 进行了模式更改
【参考方案1】:
异常表明您提供的 @Query
被视为 JSON。看看你的进口,我们会发现原因:
import org.springframework.data.mongodb.repository.Query;
虽然您的查询 SELECT user FROM User user WHERE user.username = :username
对 JPA (SQL) 有效,但对 MongoDB 无效。更改您的导入以适合您的数据库或更改查询以适合它。
一个有效的 mongoDB 看起来像来自Spring Data MongoDB example:
public interface PersonRepository extends MongoRepository<Person, String> @Query(" 'username' : ?0 ") List<Person> findByThePersonsFirstname(String firstname);
...以及来自Spring Data JPA example 的有效 JPA 语句:
public interface UserRepository extends JpaRepository<User, Long> @Query("select u from User u where u.username = ?1") User findByEmailAddress(String emailAddress);
这需要导入org.springframework.data.jpa.repository.Query
【讨论】:
是的,我已经给出了你提到的同样的导入。 这就是我认为的问题。你的数据库是什么? 这里使用 Crudrepository 接口 绝对是mongodb 您的查询无效。尝试按照我的建议进行更改。以上是关于Spring Boot 中的 com.mongodb.util.JSONParseException?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot2 系列教程(十三)Spring Boot 中的全局异常处理
Spring Boot2 系列教程Spring Boot 中的静态资源配置
使用 Spring Boot Maven 插件时,jar 文件中缺少 Spring Boot 应用程序中的资源