我正在经历一个春天的休眠示例 http://websystique.com/spring-security/spring-security-4-remember-me-example-with-hibernate/
嗨,这里作者使用enum进行默认初始化(感谢JB Nizet理解这一点)。但是如果没有这个初始化它就可以正常工作。那么使用这个枚举还有其他任何好处吗?
使用枚举的代码
@Entity
@Table(name="USER_PROFILE")
public class UserProfile {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(name="TYPE", length=15, unique=true, nullable=false)
private String type = UserProfileType.USER.getUserProfileType();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public int hashCode() {
//hash code implementaion
}
@Override
public boolean equals(Object obj) {
//equals implementation
}
@Override
public String toString() {
return "UserProfile [id=" + id + ", type=" + type + "]";
}
}
枚举实施
public enum UserProfileType {
USER("USER"),
DBA("DBA"),
ADMIN("ADMIN");
String userProfileType;
private UserProfileType(String userProfileType){
this.userProfileType = userProfileType;
}
public String getUserProfileType(){
return userProfileType;
}
}
(我最初的问题是如何调用getUserProfileType函数以及如何初始化枚举。感谢JB Nizet以前的评论。)
答案 0 :(得分:0)
填充数据库的数据库脚本包含
INSERT INTO APP_USER_USER_PROFILE (user_id, user_profile_id)
SELECT user.id, profile.id FROM app_user user, user_profile profile
where user.sso_id='sam' and profile.type='ADMIN';
所以Sam有一个UserProfile,这个配置文件的类型是'ADMIN'。
UserProfile实体中的字段type
已映射到表type
的列user_profile
。