休眠:找不到提供程序 com.bea.xml.stream.EventFactory

Hibernate: Provider com.bea.xml.stream.EventFactory not found

我正在让 Hibernate 与 OSGi 一起工作,所以这个项目的基础是 org.hibernate.osgi

我创建了一个 persistence.xml 并尝试使用以下代码访问它:

BundleContext context = FrameworkUtil.getBundle(getClass()).getBundleContext();
ServiceReference serviceReference = context.getServiceReference(PersistenceProvider.class.getName());
PersistenceProvider persistenceProvider = (PersistenceProvider) context.getService(serviceReference);
EntityManagerFactory emf = persistenceProvider.createEntityManagerFactory("DemoUnit", null);

由于某些原因,在创建 EntityManagerFactory 时出现以下异常:

javax.xml.stream.FactoryConfigurationError: Provider com.bea.xml.stream.EventFactory not found
at javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:72)
at javax.xml.stream.FactoryFinder.find(FactoryFinder.java:178)
at javax.xml.stream.FactoryFinder.find(FactoryFinder.java:92)
at javax.xml.stream.XMLEventFactory.newInstance(XMLEventFactory.java:30)
at org.hibernate.boot.jaxb.internal.MappingBinder.<init>(MappingBinder.java:40)
at org.hibernate.boot.spi.XmlMappingBinderAccess.<init>(XmlMappingBinderAccess.java:43)
at org.hibernate.boot.MetadataSources.<init>(MetadataSources.java:87)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:208)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:177)
at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:83)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:186)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:126)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:81)
at org.hibernate.osgi.OsgiPersistenceProvider.createEntityManagerFactory(OsgiPersistenceProvider.java:77)
at org.acme.project.MyTest.getFactory(MyTest.java:28)

我认为这是一个错误,因为我在任何 P2 存储库和 Maven 中心都找不到包 com.bea.xml.stream

但是如何让 Hibernate 接受任何其他 XML 提供程序?

(或者 com.bea.xml.stream 可能是什么。至少代码试图将此 'EventFactory ' 转换为 'XMLEventFactory'。)

这是任何人都找不到的。破坏 Hibernate 的包是 com.springsource.javax.xml.stream。我用 javax.xml.stream 替换了它,现在可以使用了。

从本地 Maven 存储库中删除 javax/xml 文件夹并尝试再次构建项目。 这将解决某些情况下的问题。