初始化枚舉我有一個簡單的類在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'註解 –