与Grails中的Bootstrap.groovy类似,如何在应用启动时添加一些初始数据?
因为在@PostContstruct方法中,EntityManager在无状态会话bean中不可用(或者我做错了什么?),那么插入一些初始数据的正确方法是什么?
E.g。我想在应用程序启动时在我的系统中添加一个Admin帐户。
答案 0 :(得分:3)
因为在@PostContstruct方法中,EntityManager不可用
事实并非如此,@PostConstruct
通常是从db检索视图初始数据的正确位置。
当应用程序启动时,您可以使用Singleton EJB进行启动操作,例如添加管理员帐户,并使用@Startup
注释EJB:
@Startup
@Singleton
public class MySingleton implements Serializable {
@PersistenceContext
private EntityManager em;
@PostConstruct
public void init() {
// here you can perform queries or transactions
}
}
Enterprise Java Beans与Singleton一样,默认情况下是事务性的。对于Java EE 7,如果CDI bean使用@Transactional
进行注释,则它们将成为事务性的。
<强>链接强>: