content: 
  package com.platform.modules.system.domain;
  
  import com.alibaba.fastjson.annotation.JSONField;
  import io.swagger.annotations.ApiModelProperty;
  import lombok.Getter;
  import lombok.Setter;
  import com.platform.base.BaseEntity;
  
  import javax.persistence.*;
  import javax.validation.constraints.NotNull;
  import java.io.Serializable;
  import java.util.Objects;
  import java.util.Set;
  
  /**
   * @author AllDataDC
   * @date 2023-01-27
   */
  @Entity
  @Getter
  @Setter
  @Table(name = "sys_menu")
  public class Menu extends BaseEntity implements Serializable {
  
      @Id
      @Column(name = "menu_id")
      @NotNull(groups = {Update.class})
      @ApiModelProperty(value = "ID", hidden = true)
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      private Long id;
  
      @JSONField(serialize = false)
      @ManyToMany(mappedBy = "menus")
      @ApiModelProperty(value = "菜单角色")
      private Set<Role> roles;
  
      @ApiModelProperty(value = "菜单标题")
      private String title;
  
      @Column(name = "name")
      @ApiModelProperty(value = "菜单组件名称")
      private String componentName;
  
      @ApiModelProperty(value = "排序")
      private Integer menuSort = 999;
  
      @ApiModelProperty(value = "组件路径")
      private String component;
  
      @ApiModelProperty(value = "路由地址")
      private String path;
  
      @ApiModelProperty(value = "菜单类型，目录、菜单、按钮")
      private Integer type;
  
      @ApiModelProperty(value = "权限标识")
      private String permission;
  
      @ApiModelProperty(value = "菜单图标")
      private String icon;
  
      @Column(columnDefinition = "bit(1) default 0")
      @ApiModelProperty(value = "缓存")
      private Boolean cache;
  
      @Column(columnDefinition = "bit(1) default 0")
      @ApiModelProperty(value = "是否隐藏")
      private Boolean hidden;
  
      @ApiModelProperty(value = "上级菜单")
      private Long pid;
  
      @ApiModelProperty(value = "子节点数目", hidden = true)
      private Integer subCount = 0;
  
      @ApiModelProperty(value = "外链菜单")
      private Boolean iFrame;
  
      @Override
      public boolean equals(Object o) {
          if (this == o) {
              return true;
          }
          if (o == null || getClass() != o.getClass()) {
              return false;
          }
          Menu menu = (Menu) o;
          return Objects.equals(id, menu.id);
      }
  
      @Override
      public int hashCode() {
          return Objects.hash(id);
      }
  }