0

类似于 Grails 中的 Bootstrap.groovy,如何在应用启动时添加一些初始数据?

由于在 @PostContstruct 方法中,EntityManager 在无状态会话 bean 中不可用(或者我做错了什么?),那么插入一些初始数据的正确方法应该是什么?

例如,我想在应用程序启动时在我的系统中添加一个管理员帐户。

4

1 回答 1

4

由于在@PostContstruct 方法中,EntityManager 不可用

这不是真的,@PostConstruct通常是从数据库中检索视图初始数据的正确位置。

当应用程序启动时,您可以使用 Singleton EJB 进行启动操作,例如添加管理员帐户,并使用以下内容注释 EJB @Startup

@Startup
@Singleton
public class MySingleton implements Serializable {
    @PersistenceContext
    private EntityManager em;

    @PostConstruct
    public void init() {
        // here you can perform queries or transactions
    }
}

Enterprise Java Bean 与 Singleton 一样,默认情况下是事务性的。在 Java EE 7 中,如果 CDI bean 使用@Transactional.

链接

于 2014-07-13T18:02:50.387 回答