我使用SpringDataMongo作为ORM来访问我的MongoDb。我需要阅读一个MongoDb集合,其中包含我不管理内容及其有效性的文档。我面临一个问题:文档并非都是有效的,当我使用“findAll”方法时,我只捕获了一个异常。我希望找到所有有效的文档并拒绝无效的文档,而不是这种行为。
例如,我有一个带有原始布尔值的bean,在文档中,该字段被设置为String类型。因此,当我使用findAll时,我现在得到一个异常,但我希望拥有所有有效文档的列表。我的意思是,我的收藏中的一些文档由于错误的类型而无效——不能在beanJava类型中转换。我只是使用一个布尔示例,但它也可以显示为int,long,all基元Java类型。有一种方法可以用Spring data mongo做到这一点?
非常感谢,
这里是堆栈stace:
感谢您以上所有的留言。
我找到了一种简单而健壮的方法来做到这一点(当我请求findAll查询时拒绝无效文档)。
下面是一个名为Customer
的bean示例。
DBCollection collection = mongoTemplate.getCollection("customer");
DBCursor cursor = collection.find();
while (cursor.hasNext()) {
DBObject obj = cursor.next();
try {
Customer instance = mongoTemplate.getConverter().read(Customer.class, obj);
// We have now the Customer instance
} catch(Exception exception) {
System.err.println("ERROR: Cannot convert to Customer this DBObject " + obj);
}
}
我希望这能有所帮助!
您可以使用只返回有效数据的WHERE
子句创建自定义查询。
为此,必须以以下方式创建ObjectRepositoryCustom.java
接口:
@Repository
public interface ObjectRepositoryCustom {
//Where "o.field" is the field you have to check to decide if it's valid or not
@Query("SELECT o FROM Object o WHERE o.field = somethingThatValidsIt")
public List<Object> customFindAll();
}
然后进入ObjectRepository.java
并以以下方式添加扩展ObjectRepositoryCustom
:
//import your custom repository here
@Repository
public interface ObjectRepository extends JpaRepository<Object,Long>, ObjectRepositoryCustom {
}
注意,我使用了“对象”类型,因为我不知道你的类的名字。
然后可以像这样调用查询方法。
private final ObjectRepository objectRepository;
List<Object> result = objectRepository.customFindAll();
我希望它能有所帮助!
我希望使用方法获得表中所有值的列表。 这是我尝试过的: user.java IUserDAO.java UserRepository.java IntelliJ生成的代码: UserController.java 我得到的输出总是。为什么?
本文向大家介绍SpringDataMongoDB多文档事务的实现,包括了SpringDataMongoDB多文档事务的实现的使用技巧和注意事项,需要的朋友参考一下 一、安装MongoDB4.0.3(××) 1.1、官方安装文档 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 1.2、tar.gz包下载地址 h
我的: 错误: 原因:org。springframework。数据地图。PropertyReferenceException:找不到用户类型的属性findAll 参考-http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html?i
我为此使用了一个服务类,但为了最小的可重复示例而删除了它。目前findAll()正在返回一个空数组,而它应该从h2返回一个带有员工实体json的数组。我仍然不清楚Spring如何将数据处理到h2数据库中,所以我想这可能是我的问题的根源。 控制器: 存储库: 实体: 数据sql: schema.sql:
问题内容: 这可以返回一个字符串: 但是我无法获取返回的html文档。这不起作用: 很抱歉成为菜鸟! 编辑: 我已经在单独的文档中使用了html。所以我需要返回文档,或者以某种方式读取/解析它,所以我不只是重新输入所有的html … 编辑: 我的web.xml中有这个 还有其他我可以放的东西,所以它只是返回一个文件,例如… 问题答案: 您可以从Servlet本身 打印 HTML (不建议使用) 或