package model;
import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.JoinColumn;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import protocol.Data.UserData.UserItem;
@Entity
@Table(name="user")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User implements Serializable {
// public static final String TABLE_NAME = User.class.getSimpleName();
public static final String TABLE_NAME = "user";
public static final String TABLE_USER_ID = "user_id";
public static final String HQL_USER_ID = "userId";
/**
*
*/
private static final long serialVersionUID = 1L;
private String userId;
private String userName;
private String userPassword;
private int headIndex;
private List<User> friends;
private List<Group> groups;
public User(){
}
public User(String userId,String userName,String userPassword){
this.userId=userId;
this.userName=userName;
this.userPassword=userPassword;
}
@Id
@Column(name="user_id",columnDefinition = "char(20) COMMENT '微信号'")
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Column(name="user_name",columnDefinition = "char(20) COMMENT '昵称'")
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Column(name="user_password",columnDefinition = "char(20) COMMENT '密码'")
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
@Column(name="user_headIndex",columnDefinition = "int(4) COMMENT '头像编号'")
public int getHeadIndex() {
return headIndex;
}
public void setHeadIndex(int headIndex) {
this.headIndex = headIndex;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
@ManyToMany(targetEntity=User.class)
@JoinTable(name = "user_friends",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "friend_id"))
public List<User> getFriends() {
return friends;
}
public void setFriends(List<User> friends) {
this.friends = friends;
}
@ManyToMany(targetEntity = Group.class, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "group_members", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "group_id"))
public List<Group> getGroups() {
return groups;
}
public void setGroups(List<Group> groups) {
this.groups = groups;
}
public String toString(){
return this.getUserId()+" "+this.getUserName();
}
public static UserItem.Builder createUserItemBuilder(User user) {
UserItem.Builder builder = UserItem.newBuilder();
builder.setHeadIndex(user.getHeadIndex());
builder.setUserId(user.getUserId());
builder.setUserName(user.getUserName());
return builder;
}
}