如何通过openapi-generator-cli跳过Model类的equals()方法生成?
如何禁止openapi-generator-cli生成Model类的equals()方法
方案一:通过CLI参数直接禁用equals/hashCode生成
在你的CLI命令中添加--additional-properties equalsHashCode=false参数,即可让生成器不为Model类生成equals()和hashCode()方法,直接规避无效变量的问题:
java -jar ..\\openapi-generator-cli-6.2.1.jar generate --skip-operation-example -g spring --library spring-boot -i local-shoppingcart.json --additional-properties equalsHashCode=false
方案二:修复根源问题(解决无效变量名的本质原因)
你遇到的equals()方法中无效变量名问题,本质是Swagger定义里的泛型名称使用了全角的«»符号(比如ShoppingCartRequest«Customer»),这类符号不符合Java标识符规范,导致生成器解析出错。
建议将Swagger定义中的泛型名称改为合法的Java格式,用<>替代«»,示例修改如下:
"definitions": { // ... 保留其他原有定义 "ShoppingCartRequest<Customer>": { "type": "object", "properties": { "cartInstanceID": { "type": "string" }, "requestObject": { "$ref": "#/definitions/Customer" } }, "title": "ShoppingCartRequest<Customer>" }, "ShoppingCartResponse<Customer>": { "type": "object", "properties": { "cartInstanceID": { "type": "string" }, "responseObject": { "$ref": "#/definitions/Customer" }, "status": { "type": "string" } }, "title": "ShoppingCartResponse<Customer>" }, "ShoppingCartResponse<List<Nodes>>": { "type": "object", "properties": { "cartInstanceID": { "type": "string" }, "responseObject": { "type": "array", "items": { "$ref": "#/definitions/Nodes" } }, "status": { "type": "string" } }, "title": "ShoppingCartResponse<List<Nodes>>" } }
修改后生成器就能正确解析类名和变量名,即使保留equals()方法也不会出现格式错误。
补充:精细控制生成逻辑(可选)
如果仅需禁用equals()而保留hashCode(),可以通过配置文件实现。创建config.json文件:
{ "equalsHashCode": false }
然后在CLI命令中引用该配置文件:
java -jar ..\\openapi-generator-cli-6.2.1.jar generate --skip-operation-example -g spring --library spring-boot -i local-shoppingcart.json -c config.json
注:openapi-generator 6.2.1版本的Spring生成器暂不支持单独禁用equals()或hashCode(),因此该配置会同时禁用两个方法。若需更精细控制,需自定义模板,但上述两种方案已能解决你的核心问题。
内容的提问来源于stack exchange,提问作者Raghavan
相关产品推荐
相关产品推荐

