在我的应用程序中,我使用 Spring 上下文和 JPA。我有一组带有注释的实体@Entity
,它们的表是在系统启动期间自动创建的。最近我开始使用 Spring ACL,所以我必须有以下额外的 DB 模式,并且我不希望将这些表映射到实体(只是我不需要它们,因为 Spring ACL 独立管理它们)。
- 我想自动将管理员用户帐户插入到
User
实体表中。如何正确地做到这一点? - 我想在系统启动期间初始化 Spring ACL 自定义表,但是 SQL 脚本文件似乎不是一个好的解决方案,因为如果我使用不同的数据库进行生产和功能测试,不同的 SQL 方言不允许我在两者上正确执行脚本引擎(例如,当使用 MySQL 和 HSQL 时)。
起初我尝试ServletListener
在 servlet 初始化期间使用它检查数据库并添加必要的数据和模式,但这不适用于集成测试(因为根本不涉及 servlet)。
我想要实现的是在 JPA 初始化所有实体表之后启动的 Spring bean (?),使用注入的 DAO 插入所有启动数据并以某种方式创建 Spring ACL 模式。然后 - 我希望将 bean 从 IoC 中删除(因为我不再需要它了)。是否可以?
或者有没有更好的方法来做到这一点?