2017-07-25 42 views
0

我有一个有点工作的Hibernate实例嵌入到我的OSGi上下文中。现在我也想拥有Envers。在OSGi中使用Enversi

documentation状态:

由于ORM 4.2,Envers完全支持。

所以这是可能的。我只是不知道如何。我忠实地将@Audited添加到我的某个实体,但没有发生任何事情。

我想这些侦听器添加到我的的persistence.xml

<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" /> 

它不工作,因为不存在的监听器类了(我使用Hibernate 5.1)。

除此之外,没有太多的文件。

如何在OSGi中启用Envers?

(PS。我们不打算使用Eclipse双子座或Apache白羊座,因为我们评估了他们,他们没有给我们的使用情况下工作。)

+0

什么OSGi环境你使用? – Naros

+0

当前Eclipse平台中的一个。所以...分数与费利克斯洒。 –

回答

0

我们也有这个问题。尝试这些步骤。

  1. 监听器不再需要在配置文件中设置,请遵循hibernate osgi指令。

  2. 确保您的hibernate包,特别是hibernate-envers,在实体包之前启动。

  3. 确保您的persistence.xml文件中包含的

<property name="hibernate.hbm2ddl.auto" value="update"/>

有效的条目,
  • 查找Hibernate的DDL错误,如“灿'创建主键',可能会干扰注册

  • 如果引用枚举,请参阅我的答案在这里:Classloader Issues with Envers in OSGi

  • 在EnversIntegrator.integrate中放置一个断点,以确保它在调用时不会跳出。

  • 0

    迟到了,但如果任何人在这里扔,这需要它:

    史蒂芬的前两个点是点上。 OSGi中的Hibernate bootstrapping看起来与SE/EE域中的不同。我们在JIRA跟踪增强中有很多门票,特别是为了使事情更具动态性并减少启动顺序的脆弱性(Steven绝对正确,认为hibernate-core,hibernate-envers等等。必须目前在你的bundle之前首先启动)。

    我们的hibernate-demos项目有几个OSGi快速入门,所有这些包括Envers设置。这一个可能更多的是你要找的东西:https://github.com/hibernate/hibernate-demos/tree/master/hibernate-orm/osgi/unmanaged-native

    +0

    我很难将示例翻译成我的设置。你可以链接我的起始位置的文件吗?也许其他任何与简单的OSGi中的捆绑相关的东西都是相关的? –