Java 什么';OSGI容器中的JPA持久化单元生命周期是什么?
场景Java 什么';OSGI容器中的JPA持久化单元生命周期是什么?,java,jpa,osgi,openjpa,fuseesb,Java,Jpa,Osgi,Openjpa,Fuseesb,场景 运行在JBoss Fuse ESB中的OSGI包 以OpenJPA为实现的JPA持久化单元 JNDI引用的数据源的H2数据库 OpenJPA被指示通过SynchonriseMappings 问题 持久化单元何时启动并加载表,是否有方法影响此行为 我问这个问题的原因是,我在init上创建的数据库上运行了一些自定义SQL,我尝试使用blueprintinit方法和OSGI bundle activators调用这些数据库,但每次都没有这些表 我还尝试让运行脚本的bean依赖于EntityM
- 运行在JBoss Fuse ESB中的OSGI包
- 以OpenJPA为实现的JPA持久化单元
- JNDI引用的数据源的H2数据库
- OpenJPA被指示通过
SynchonriseMappings
init方法和OSGI bundle activators调用这些数据库,但每次都没有这些表
我还尝试让运行脚本的bean依赖于EntityManager
,但同样没有乐趣。我甚至尝试使用第一条消息作为触发器进行延迟加载,以确保在尝试之前捆绑包已完全启动,并且表仍然不存在
我能让它工作的唯一方法是对实体进行虚拟调用,例如,entityManager.find(MyEntity.class,-1)代码>,在使用SQL之前,我是通过init方法
实现的,但我确信它也可以在激活器中工作
这是我使用JPA多年来从未注意到的行为,我想为了自己的理智理解它
这只是针对第三方服务的模拟实现,因此要求JPA在启动时创建模式并运行SQL文件