场景:
springboot项目启动,控制台报错
java.lang.IllegalStateException: Ambiguous models equality when conditions is empty
这是由于集成了 swagger 并且实体类或dto类之间循环引用,两个对象之间存在循环引用可能会导致Springfox无法判断对象的模型定义,从而出现模糊不清的歧义
swagger框架的bug导致,集成的是 springfox 依赖版本
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
解决:
1、把 springfox-swagger2 的版本降低至 2.9.2
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
2、把循环引用的两个dto中swagger属性的文档标记为隐藏 hidden = true
@ApiModelProperty(value = "xxx", hidden = true)
private XxxDto xxxDto;
此方式只是临时解决,只是swagger文档看不见此属性,但不影响接口正常返回该属性