Springfox 3.0.0升级后报Ambiguous models equality错误如何解决
Springfox 3.0.0
Ambiguous models equality when conditions is empty 报错解决方案 方案1:升级Springfox到快照修复版
3.0.0正式版的修复未覆盖所有实体关联场景,可升级到3.0.1-SNAPSHOT版本,首先在pom.xml中添加快照仓库:
<repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/libs-snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
再将原有springfox相关依赖的版本号修改为3.0.1-SNAPSHOT即可。
方案2:调整Swagger配置忽略关联类型
不想使用快照版本的话,可以在Docket配置中添加规则,跳过关联框架的特殊类型扫描:
@Bean public Docket api() { return new Docket(DocumentationType.OAS_30) .select() .apis(RequestHandlerSelectors.basePackage("你的业务代码包路径")) .paths(PathSelectors.any()) .build() // 忽略持久化框架关联类,避免级联扫描冲突 .ignoredParameterTypes( org.hibernate.collection.spi.PersistentCollection.class, javax.persistence.EntityManager.class ) .genericModelSubstitutes(Optional.class); }
方案3:关联字段添加忽略注解
针对触发问题的实体关联字段(如@OneToMany、@ManyToOne标注的字段),直接添加@ApiIgnore注解,让Swagger扫描时跳过该字段即可:
@ManyToOne @ApiIgnore private User parentUser;
方案4:迁移至SpringDoc(长期兼容方案)
Springfox已停止维护多年,适配新框架版本的问题会持续出现,可直接替换为仍在维护的SpringDoc OpenAPI,仅需引入对应依赖即可兼容大部分原有Swagger注解,不会出现该类模型扫描冲突:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.7.0</version> </dependency>
内容的提问来源于stack exchange,提问作者zahra khosravimehr
相关产品推荐
相关产品推荐

