package com.fang.bbks.modules.sys.entity; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.Transient; import javax.validation.constraints.Size; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; import org.hibernate.annotations.Where; import org.hibernate.validator.constraints.Email; import com.fang.bbks.common.persistence.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.google.common.collect.Lists; /** * 用户基本表 * @author Lee */ @SuppressWarnings("serial") @Entity @Table(name = "TB_USER") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class User extends BaseEntity implements Serializable{ @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id;//主键id private String username;//登录名称 private String password;//登录密码 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00") private Date createDate;//创建日期 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00") private Date updateDate;//创建日期 private String delFlag; // 删除标记(0:正常;1:删除) @Email private String email;//邮箱 private String gender;//性别0:man.1women @Size(max=2) private String isCompany = BaseEntity.NO;//默认为普通用户,No表示公司用户 private String avatar;//头像 private String description;//心情说明 private Integer reading ;//在读书籍//1-n private Integer liking ;//喜欢读书籍//1-n private Integer wantRead ;//在读书籍//1-n private Integer hasRead ;//已读书籍//1-n private Integer flowings;//关注数 private Integer floweds;//粉丝数 private Integer messages;//粉丝数 //多对多定义 @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "sys_user_role", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") }) @Where(clause="del_flag="+DEL_FLAG_NORMAL) //@OrderBy("id") @Fetch(FetchMode.SUBSELECT) @NotFound(action = NotFoundAction.IGNORE) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @JsonIgnore private List<Roles> roleList = Lists.newArrayList(); // 拥有角色列表 @Size(max=50) private String location;//位置 @Size(max=50) private String address;//地址 @Size(max=50) private String weibo;//微博 @Size(max=50) private String blogs;//博客 @Size(max=512) private String introduction;//自述 @Transient private Boolean doFlow; public User(){ this.createDate = new Date(); this.delFlag = DEL_FLAG_NORMAL; this.isCompany = NO; this.floweds = 0; this.flowings = 0; this.hasRead = 0; this.liking = 0; this.updateDate = new Date(); this.wantRead = 0; this.reading = 0; this.messages = 0; this.gender = "0"; } public User(Long id){ super(); this.id = id; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public void setDelFlag(String delFlag) { this.delFlag = delFlag; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getIsCompany() { return isCompany; } public void setIsCompany(String isCompany) { this.isCompany = isCompany; } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } public List<Roles> getRoleList() { return roleList; } public void setRoleList(List<Roles> roleList) { this.roleList = roleList; } public String getDelFlag() { return delFlag; } public Integer getMessages() { return messages; } public void setMessages(Integer messages) { this.messages = messages; } /** * @return the updateDate */ public Date getUpdateDate() { return updateDate; } /** * @param updateDate the updateDate to set */ public void setUpdateDate(Date updateDate) { this.updateDate = updateDate; } public Integer getReading() { return reading; } public void setReading(Integer reading) { this.reading = reading; } public Integer getLiking() { return liking; } public void setLiking(Integer liking) { this.liking = liking; } public Integer getWantRead() { return wantRead; } public void setWantRead(Integer wantRead) { this.wantRead = wantRead; } public Integer getHasRead() { return hasRead; } public void setHasRead(Integer hasRead) { this.hasRead = hasRead; } public Integer getFlowings() { return flowings; } public void setFlowings(Integer flowings) { this.flowings = flowings; } public Integer getFloweds() { return floweds; } public void setFloweds(Integer floweds) { this.floweds = floweds; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getWeibo() { return weibo; } public void setWeibo(String weibo) { this.weibo = weibo; } public String getBlogs() { return blogs; } public void setBlogs(String blogs) { this.blogs = blogs; } public String getIntroduction() { return introduction; } public void setIntroduction(String introduction) { this.introduction = introduction; } @Transient @JsonIgnore public List<Long> getRoleIdList() { List<Long> roleIdList = Lists.newArrayList(); for (Roles role : roleList) { roleIdList.add(role.getId()); } return roleIdList; } public Boolean getDoFlow() { return doFlow; } public void setDoFlow(Boolean doFlow) { this.doFlow = doFlow; } @Transient public void setRoleIdList(List<Long> roleIdList) { roleList = Lists.newArrayList(); for (Long roleId : roleIdList) { Roles role = new Roles(); role.setId(roleId); roleList.add(role); } } }