package com.izouma.awesomeAdmin.domain; import com.alibaba.excel.annotation.ExcelIgnore; import com.fasterxml.jackson.annotation.JsonIgnore; import com.izouma.awesomeAdmin.annotations.Searchable; import com.izouma.awesomeAdmin.config.Constants; import com.izouma.awesomeAdmin.security.Authority; import io.swagger.annotations.ApiModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.annotations.BatchSize; import javax.persistence.*; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import java.io.Serializable; import java.util.HashSet; import java.util.Set; @Data @Entity @AllArgsConstructor @NoArgsConstructor @Builder @ApiModel(value = "用户", description = "用户") public class User extends BaseEntity implements Serializable { @Pattern(regexp = Constants.Regex.USERNAME) @Size(min = 1, max = 50) @Column(nullable = false, unique = true) @Searchable private String username; @Searchable private String nickname; private String avatar; @JsonIgnore private String password; private boolean del = false; @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH}) @JoinTable( name = "user_authority", joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))}, inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name", foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))}) @BatchSize(size = 20) @ExcelIgnore private Set authorities = new HashSet<>(); private String openId; private String sex; private String language; private String city; private String province; private String country; @Searchable private String phone; private String email; }