package org.springside.modules.unit.orm.hibernate.data; import java.util.Date; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.Transient; import org.apache.commons.lang.builder.ToStringBuilder; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; import org.springside.modules.utils.reflection.ConvertUtils; import com.google.common.collect.Lists; /** * 用户. * * @author calvin */ @Entity @Table(name = "SS_USER") public class User extends IdEntity { private String loginName; private String plainPassword; private String name; private String email; private String status; private Date createTime; private List<Role> roleList = Lists.newArrayList(); //有序的关联对象集合 @Column(nullable = false, unique = true) public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } /** * 演示用明文密码. */ public String getPlainPassword() { return plainPassword; } public void setPlainPassword(String plainPassword) { this.plainPassword = plainPassword; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } //多对多定义 @ManyToMany //中间表定义,表名采用默认命名规则 @JoinTable(name = "SS_USER_ROLE", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") }) //Fecth策略定义 @Fetch(FetchMode.SUBSELECT) //集合按id排序 @OrderBy("id ASC") public List<Role> getRoleList() { return roleList; } public void setRoleList(List<Role> roleList) { this.roleList = roleList; } @Transient public String getRoleNames() { return ConvertUtils.convertElementPropertyToString(roleList, "name", ", "); } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } }