Если вы проверите:
karaf@root()> feature:info jpa
Feature jpa 2.7.2
Description:
OSGi Persistence Container
Details:
JPA implementation provided by Apache Aries JPA 2.x. NB: this feature doesn't provide the JPA engine, you have to install one by yourself (OpenJPA for instance)
Feature has no configuration
Feature has no configuration files
Feature has no dependencies.
Feature contains followed bundles:
mvn:org.apache.aries.jpa.javax.persistence/javax.persistence_2.1/2.7.2
mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1.redhat-2 (overriden from mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1)
mvn:org.osgi/org.osgi.service.jdbc/1.0.0
mvn:org.apache.felix/org.apache.felix.coordinator/1.0.2 start-level=30
mvn:org.apache.aries.jpa/org.apache.aries.jpa.api/2.7.2 start-level=30
mvn:org.apache.aries.jpa/org.apache.aries.jpa.container/2.7.2 start-level=30
mvn:org.apache.aries.jpa/org.apache.aries.jpa.support/2.7.2 start-level=30
Feature contains followed conditionals:
Conditional(aries-blueprint) has no configuration
Conditional(aries-blueprint) has no configuration files
Conditional(aries-blueprint) has no dependencies.
Conditional(aries-blueprint) contains followed bundles:
mvn:org.apache.aries.jpa/org.apache.aries.jpa.blueprint/2.7.2 start-level=30
Вы увидите Примечание: эта функция не предоставляет движок JPA, вы должны установить его самостоятельно (например, OpenJPA) ,Это описание кажется старым. Вам нужен настоящий JPA-провайдер, например:
karaf@root()> feature:info hibernate
Feature hibernate 5.3.10.Final-redhat-00001
Description:
Hibernate JPA engine support
Feature has no configuration
Feature has no configuration files
Feature depends on:
wrap 0.0.0
hibernate-orm 5.3.10.Final-redhat-00001
Feature contains followed bundles:
mvn:net.bytebuddy/byte-buddy/1.9.5.redhat-00001 (overriden from mvn:net.bytebuddy/byte-buddy/1.9.5.redhat-00001)
Feature has no conditionals.
(версии пакетов от Fuse новее 7.0).
Поэтому, пожалуйста, установите дополнительно hibernate
функцию:
karaf@root()> feature:install hibernate
karaf@root()> la -l|grep hibernate
249 │ Active │ 80 │ 5.0.4.Final-redhat-00001 │ mvn:org.hibernate.common/hibernate-commons-annotations/5.0.4.Final-redhat-00001
250 │ Active │ 80 │ 5.3.10.Final-redhat-00001 │ mvn:org.hibernate/hibernate-core/5.3.10.Final-redhat-00001
251 │ Active │ 80 │ 5.3.10.Final-redhat-00001 │ mvn:org.hibernate/hibernate-osgi/5.3.10.Final-redhat-00001
РЕДАКТИРОВАТЬ 2019-11-07:
Я проверил (готовится к выпуску предохранитель 7.5, но должен быть действителен для 7.0) и обнаружил возникшую проблему.
Если вы проверите:
karaf@root()> ls PersistenceProvider
[javax.persistence.spi.PersistenceProvider]
-------------------------------------------
javax.persistence.provider = org.hibernate.jpa.HibernatePersistenceProvider
service.bundleid = 250
service.id = 468
service.scope = bundle
Provided by :
hibernate-osgi (250)
Used by:
Apache Aries JPA Specification 2.1 API (244)
Camel Content-Based Router Example [EXAM-PREP] (256)
вы увидите, что org.hibernate.jpa.HibernatePersistenceProvider
JPA-провайдер зарегистрирован в Hibernate.
Однако вы добавили (в META-INF/persistence.xml
):
<provider>org.hibernate.ejb.HibernatePersistence</provider>
Вы должны удалитьэтот провайдер или используйте org.hibernate.jpa.HibernatePersistenceProvider
, потому что он влияет на фильтр OSGi, созданный org.apache.aries.jpa.container.impl.PersistenceProviderTracker#createFilter
для вашего пакета. Так вот почему вы не зарегистрировали EMF.
С этим изменением я обнаружил, что оно работает:
karaf@root()> ls EntityManagerFactory
[javax.persistence.EntityManagerFactory]
----------------------------------------
hibernate.connection.pool_size = 25
hibernate.dialect = org.hibernate.dialect.DerbyDialect
hibernate.hbm2ddl.auto = create
hibernate.show_sql = true
javax.persistence.jdbc.driver = org.apache.derby.jdbc.EmbeddedDriver
javax.persistence.jdbc.url = jdbc:derby:memory:order;create=true
javax.persistence.jdbc.user = sa
osgi.unit.name = camel
osgi.unit.provider = org.hibernate.jpa.HibernatePersistenceProvider
osgi.unit.version = 4.1.4
service.bundleid = 256
service.id = 501
service.scope = singleton
Provided by :
Camel Content-Based Router Example [EXAM-PREP] (256)
Used by:
Camel Content-Based Router Example [EXAM-PREP] (256)