Java &引用;“找到循环”;使用Spring数据Mongo 1.5

Java &引用;“找到循环”;使用Spring数据Mongo 1.5,java,spring,spring-data,spring-data-mongodb,Java,Spring,Spring Data,Spring Data Mongodb,我有一个使用SpringDataMongoDB1.4.2完美运行的项目。 我试图更新到1.5.0,但在自动布线(提取)过程中出现此错误: 原因:org.springframework.data.mongodb.core.index.mongoperistentEntityIndexResolver$CyclicPropertyReferenceException:在路径“Filter.rules”的“Filter”类型中找到字段“rules”的循环。 在org.springframework.d

我有一个使用SpringDataMongoDB1.4.2完美运行的项目。 我试图更新到1.5.0,但在自动布线(提取)过程中出现此错误:

原因:org.springframework.data.mongodb.core.index.mongoperistentEntityIndexResolver$CyclicPropertyReferenceException:在路径“Filter.rules”的“Filter”类型中找到字段“rules”的循环。
在org.springframework.data.mongodb.core.index.mongopersistententyindexresolver$CycleGuard.protect(mongopersistentyindexresolver.java:370)~[spring-data-mongodb-1.5.0.RELEASE.jar:na]
位于org.springframework.data.mongodb.core.index.mongopersistententyindexresolver$2.doWithPersistentProperty(mongopersistentyindexresolver.java:144)~[spring-data-mongodb-1.5.0.RELEASE.jar:na]
在org.springframework.data.mongodb.core.index.mongopersistententyindexresolver$2.doWithPersistentProperty(mongopersistentyindexresolver.java:138)~[spring-data-mongodb-1.5.0.RELEASE.jar:na]
在org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:294)~[spring-data-commons-1.8.0.RELEASE.jar:na]

我有一个存储库“RulesDAO”,只是扩展了“MongoRepository”。它管理一个名为“Rule”的实体。该实体有一些基本字段和一个“过滤器”字段。这个Filter类包含一个Filter列表(可以是空的)

@文档(collection=“rules”)
公共阶级规则{
@Id私有字符串Id;
私有字符串名称;
//其他领域
专用滤波器;
}
公共类过滤器{
//团体
私有字符串条件;
私有列表规则=新建ArrayList();
//查询
私有字符串字段;
私有字符串值;
}
(“rules”不是一个完美的名称,但MVC绑定必须以这种方式命名)

因此Filter.rules属性被解释为一个循环,而它不是!(根据我对“周期”一词的理解)

它是版本中的一个bug还是这个用例有一个新的“标志”

谢谢



对于背景故事,Filter类可以是用于构建复杂条件的树的叶子或节点,它是从mines的jQuery插件的JSON构建的。

给定类型包含一个结构,该结构在尝试解析索引信息和/或从存储读取值时可能导致无限循环。 在启动期间,将检查集合的域类型和泛型类型信息。这指出了结果错误中提到的周期

Rule -> Filter -> Filter.rules
          ^                |
          |                |
          +----------------+
虽然错误不应阻止容器启动,但应仅打印到日志中。也许你额外遇到了一个问题,想给当前的1.5.1快照一个旋转


请随时联系我

您正在使用: 私有列表规则=新建ArrayList()

将此更改为: 私人名单儿童


我也遇到了同样的问题,但使用此代码后,代码运行良好,没有错误。

您的代码是正确的。该日志消息只是
INFO
级别,告诉您代码中存在潜在的循环引用

您可以通过关闭记录器来忽略这条恼人的消息。如果您使用的是Spring Boot,请将其添加到
应用程序.properties
文件中:

logging.level.org.springframework.data.mongodb.core.index=OFF

我理解为什么我的模式可能会发出警告,但对于托马斯·格雷戈里(Thomas Gregory),我不理解(尽管Spring认为“String dispositionCode”是DipositionCode的类型…)。似乎不存在相同的问题当根中有2个或更多相同类型的属性时,这是一个问题。将在1.5.1中解决,一旦它进入GA.version 1.8.1.RELEASE,问题仍然存在,版本spring data mongodb:1.10.1.RELEASE,并且仍然警告相同。在我的例子中:
org.springframework.data.mongodb.core.index.MongoResistentEntityIndexResolver$CyclicPropertyReferenceException:在路径“fecha”的“DateTime”类型中为字段“iChronology”找到了周期。
spring会话数据mongodb:1.3.0.RELEASE是否也必须与此警告一起发布?我目前不仅在启动时看到了这一点,而且在运行期间也看到了这一点RESTAPI调用。执行两次API会得到两次30K的代码行。这是否意味着每次都在运行此检查?对于版本1.5.0,它不仅仅是一条日志消息,而是一个阻塞异常。Ops。。我使用的是1.6.3,所以这不是一个问题,您是否可以提供关于SpringMongoDB日志的细粒度控制的附加信息或链接?
Rule -> Filter -> Filter.rules
          ^                |
          |                |
          +----------------+