Java实体管理器-JSON阅读器需要一个值,但找到了';db';
我已使用此代码:Java实体管理器-JSON阅读器需要一个值,但找到了';db';,java,json,mongodb,entitymanager,Java,Json,Mongodb,Entitymanager,我已使用此代码: EntityManager entityManager = getEntityManager(); entityManager.getTransaction().begin(); String query = "db.Band.find({})"; List<Band> list = (List<Band>) entityManager.createNativeQuery(query, Band.class).getResultList(); entit
EntityManager entityManager = getEntityManager();
entityManager.getTransaction().begin();
String query = "db.Band.find({})";
List<Band> list = (List<Band>) entityManager.createNativeQuery(query, Band.class).getResultList();
entityManager.close();
return list;
我的控制台给了我以下信息:
org.bson.json.JsonParseException:json读取器需要一个值,但找到“db”
我检查了我的字符串
在Mongo控制台中是否正常工作,它确实正常。有什么想法吗
编辑:我试着在引号之间加上“something\uu id”,因为如果我没有排序部分,即使没有排序部分,它也无法工作(我刚刚意识到这一点),但现在它说我正在进行一个不受支持的本机查询,指出排序部分。我应该在列表对象中已经有了它之后再对它进行排序吗?这个答案很晚了,但我已经为同一问题争论了很久,所以也许它会帮助其他人
根据,键和值都必须用引号括起来,因此
something\uu id
应该是“something\uu id”
,问题是,如果要访问的字段类型是字符串,则需要在字段值中添加引号
举个例子,我构建了一个用于创建查询的小DSL,而不必费心处理MongoDB特定的关键字,例如$eq
,$lt
等。我遇到了类似的问题。它可以通过添加单引号来解决
Queries.get(Query.where("name", Operator.is("'Kim'")))
这可能会对某些人有所帮助,我也遇到了类似的错误,最后是因为我缺少了一个索引。我所做的是:@Query({{$or:[{'A':10},{'B':'20}}”)
在mongo控制台中工作。它应该是@Query({$or':[{'A':10},{'B':20}])
工作得很好。我猜您对特定API使用了错误的查询格式。
Queries.get(Query.where("name", Operator.is("'Kim'")))