当前位置: 首页 > 知识库问答 >
问题:

Spring数据Mongo 1.5的“发现周期”

微生季
2023-03-14

我有一个使用Spring Data MongoDB 1.4.2完美运行的项目。我试图更新到1.5.0,但在自动布线(摘录)html" target="_blank">过程中出现此错误:

原因:组织。springframework。数据mongodb。果心指数MongopersistentyIndexResolver$CyclicPropertyReferenceException:在路径“Filter”的类型“Filter”中找到字段“rules”的周期。组织上的规则“
。springframework。数据mongodb。果心指数MongoPersistentEntityIndexResolver$CycleGuard。protect(mongopersistentyindexresolver.java:370)~[spring-data-mongodb-1.5.0.RELEASE.jar:na]
位于org。springframework。数据mongodb。果心指数MongoPersistentEntityIndexResolver 2美元。doWithPersistentProperty(mongopersistententyindexresolver.java:144)~[spring-data-mongodb-1.5.0.RELEASE.jar:na]
位于org。springframework。数据mongodb。果心指数MongoPersistentEntityIndexResolver 2美元。doWithPersistentProperty(mongopersistententyindexresolver.java:138)~[spring-data-mongodb-1.5.0.RELEASE.jar:na]
位于org。springframework。数据映射。模型BasicPersistentEntity。doWithProperties(basicpersistentinentity.java:294)~[spring-data-commons-1.8.0.RELEASE.jar:na]

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

@Document(collection="rules")
public class Rule {

    @Id private String id;

    private String name;

    // other fields

    private Filter filter;

}

public class Filter {

    // for groups
    private String condition;

    private List<Filter> rules = new ArrayList<Filter>();


    // for query
    private String field;

    private String value;

}

(“rules”不是一个完美的名称,但MVC绑定必须以这种方式命名)

所以过滤器。规则属性被解释为一个循环,而不是!(根据我对“周期”一词的理解)

是版本中的错误还是此用法有新的“标志”?

谢谢

对于背景故事,过滤器类可以是用于构建复杂条件的树的叶子或节点,它是从mines的jQuery插件的JSON构建的http://mistic100.github.io/jQuery-QueryBuilder

共有3个答案

陈浩
2023-03-14

您正在使用:私有列表

将此更改为:私有列表

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

盛超
2023-03-14

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

Rule -> Filter -> Filter.rules
          ^                |
          |                |
          +----------------+

虽然错误不应该阻止容器启动-应该只打印到日志中。也许您还遇到了DATAMONGO-949并希望旋转当前的1.5.1-SNAPSHOT。

请随便开一张票。

闻人宜
2023-03-14

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

您可以通过关闭记录器来忽略这条恼人的消息。如果您使用的是Spring Boot,请将其添加到应用程序中。属性文件:<代码>日志记录。数量组织。springframework。数据mongodb。果心索引=关闭

 类似资料:
  • 所有的数据都有生命周期,生命周期越长,需要的手续费(Energy)越多。生命周期终止,数据将被删除。从而可以淘汰无用数据。 日志型数据的生命周期是固定的一年,通过数据的生命周期,可以计算出日志写入时间,跨链读取将以这个时间和区块的时间比较,如果大于n*5分钟(n为两条链的逻辑距离),则日志数据是有效的。从而实现可信的跨链数据读取。

  • 定义 SHOW DB_DISCOVERY RULES [FROM schemaName] 说明 列 说明 name 规则名称 dataSourceNames 数据源名称列表 discoverType 数据库发现服务类型 discoverProps 数据库发现服务参数 示例 mysql> show db_discovery rules from database_dis

  • 定义 CREATE DB_DISCOVERY RULE databaseDiscoveryRuleDefinition [, databaseDiscoveryRuleDefinition] ... ALTER DB_DISCOVERY RULE databaseDiscoveryRuleDefinition [, databaseDiscoveryRuleDefinition] ... DR

  • 场景:一个线程每秒被调用数千次,以对同一个表执行插入操作,目前正在逐个执行这些操作。 目标:定期批量插入以提高性能。 当线程的方法被调用时,尝试使用TimerTask将保存到列表中的对象添加到列表中,然后每2秒左右将它们组合起来进行批插入。 第一个想法是有两个列表,分别称为和。当调用线程的方法来保存某些内容时,它将被添加到toSave列表中,但一旦TimerTask启动并需要将所有内容保存到数据库

  • 参数: url - 返回JSON格式数据,数据格式与添加(更新)数据定义的data相同 liveLoadCallback - 当加载完成时执行的回调函数 duration - 周期性数据加载时间(以毫秒为单位) 周期性地从一个数据源加载数据,用法: var url = "dynamicallyAPI/data"; // 使用liveLoad() API加载URL中的数据。 // 设置回调。 //

  • 问题内容: 与此问题类似,但我的数据集还有一个包含许多ID的附加列。每个ID的数据集的返回时间都是固定的,有些星期可能会丢失数据- 我想填写缺少的几周的值。 例如,我想要这样: 扩展为: 我已经填写了我要填写的WEEKEND_DAY(在上述情况下,从2012年1月1日至2012年1月15日,每周)的已知范围。如何执行此操作? 问题答案: 使用分区外部联接: