Hibernate 在OSGi中使用enver

Hibernate 在OSGi中使用enver,hibernate,osgi,hibernate-envers,Hibernate,Osgi,Hibernate Envers,我在OSGi上下文中嵌入了一个Hibernate的工作实例。现在我也想要一个Envers 各国: 从ORM 4.2开始,Envers完全受支持 所以这是可能的。我只是不知道怎么做。我尽职尽责地将@Audited添加到我的一个实体中,但什么也没发生 我尝试将以下侦听器添加到persistence.xml中: 它无法工作,因为侦听器类不再存在(我使用的是Hibernate 5.1) 除此之外,没有太多的文档 如何在OSGi中启用Envers (另外,我们不打算使用EclipseGemini或Ap

我在OSGi上下文中嵌入了一个Hibernate的工作实例。现在我也想要一个Envers

各国:

从ORM 4.2开始,Envers完全受支持

所以这是可能的。我只是不知道怎么做。我尽职尽责地将
@Audited
添加到我的一个实体中,但什么也没发生

我尝试将以下侦听器添加到persistence.xml中:


它无法工作,因为侦听器类不再存在(我使用的是Hibernate 5.1)

除此之外,没有太多的文档

如何在OSGi中启用Envers


(另外,我们不打算使用EclipseGemini或ApacheAries,因为我们对它们进行了评估,它们不适用于我们的用例。)

我们也遇到了这个问题。试试这些步骤

  • 监听器不再需要在配置文件中设置,请按照hibernate osgi说明操作

  • 确保您的hibernate捆绑包,尤其是hibernate envers,在实体捆绑包之前启动

  • 确保persistence.xml文件包含有效条目,如

  • 查找Hibernate DDL错误,例如可能干扰注册的“无法创建主键”

  • 如果引用枚举,请参见我的答案:

  • 在EnversIntegrator.integrate中放置一个断点,以确保在未退出时调用该断点


  • 派对迟到了,但把这个扔到这里以防其他人需要它:

    史蒂文的前两分很准确。Hibernate引导在OSGi中看起来与在SE/EE领域中完全不同。我们在JIRA跟踪增强中有很多功能,特别是为了使事情更具动态性和减少启动顺序的脆弱性(Steven绝对正确,hibernate core、hibernate envers等当前必须在捆绑之前首先启动)


    我们的hibernate演示项目有几个OSGi快速入门,所有这些都包括Envers设置。这可能更符合您的需求:

    您使用的是什么OSGi环境?当前Eclipse平台中的环境。所以在春分点撒上一点菲利克斯。我很难把这个例子翻译成我的设置。你能把有起始位置的文件链接给我吗?也许还有什么其他与在普通OSGi中启动捆绑包相关的东西?
     <property name="hibernate.ejb.event.post-insert" value="org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener" />
     <property name="hibernate.ejb.event.post-update" value="org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener" />
     <property name="hibernate.ejb.event.post-delete" value="org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener" />
     <property name="hibernate.ejb.event.pre-collection-update" value="org.hibernate.envers.event.AuditEventListener" />
     <property name="hibernate.ejb.event.pre-collection-remove" value="org.hibernate.envers.event.AuditEventListener" />
     <property name="hibernate.ejb.event.post-collection-recreate" value="org.hibernate.envers.event.AuditEventListener" />