初始化枚举我有一个简单的类在Hibernate和Spring
@Entity
@Table(name="user")
public class User implements Serializable {
@Id
@GeneratedValue
private Integer Id;
@Length(min = 5, message = "Username must be at least 5 characters long.")
@Column(name="username",nullable=false,unique=true)
private String userName;
@ManyToMany(cascade= {CascadeType.PERSIST},fetch=FetchType.EAGER)
@JoinTable(name="user_user_profile")
private Set<UserProfile> userProfile = new HashSet<>();
}
,二类:
@Entity
@Table(name = "user_profile")
public class UserProfile {
@javax.persistence.Id
@GeneratedValue
private int Id;
@Column(name = "type", nullable = false, unique = true)
@Enumerated(EnumType.STRING)
private UserProfileType type = UserProfileType.USER;
}
public enum UserProfileType {
USER("USER"),
ADMIN("ADMIN");
}
我使用Spring MVC和春天Secuirty与Hibernate。有什么办法可以在应用程序启动时使每个可能的条目都在UserProfile
实体(只有两个)?我是否必须从数据库获取UserProfile
(通过TypedQuery
或EntityManager.find()
),然后将其添加到用户以避免发生任何异常?
通常我为spring上下文启动事件添加一个监听器。当我得到事件时,我会做所有我需要的初始化操作。在这里你可以找到如何构建监听器https://spring.io/blog/2015/02/11/better-application-events-in-spring-framework-4-2我建议你使用'@ EventListener'注解 –