如何配置 Hibernate 以在 Karaf JPA 示例中工作?

Posted

技术标签:

【中文标题】如何配置 Hibernate 以在 Karaf JPA 示例中工作?【英文标题】:How do I configure Hibernate to work in Karaf JPA Example? 【发布时间】:2019-03-22 13:55:29 【问题描述】:

我想了解这个Karaf JPA example。

当我按照说明添加功能并运行 eclipseLink 的捆绑包时,该示例可以正常工作。

但是,如果我尝试使用 Hibernate,它就不起作用。我不太了解 Hibernate / H2,不知道我错过了什么。当我运行feature:install karaf-jpa-example-provider-ds-hibernate 时,我在日志中看到了这一点:

javax.persistence.PersistenceException: [PersistenceUnit: booking-hibernate] Unable to build Hibernate SessionFactory

diag 返回此信息:

Status: Waiting
Declarative Services
org.apache.karaf.examples.jpa.provider.ds.hibernate.BookingServiceImpl (1) missing references: jpaTemplate

karaf 和 H2 安装是新的和空的。我怀疑在 H2 中我需要做一些事情,但我对这个数据库没有经验。

编辑: 使用blueprint 示例,eclipseLink 再次起作用,而 Hibernate 不起作用。执行此命令:feature:install karaf-jpa-example-provider-blueprint-hibernate 导致日志中出现此错误:

ERROR [features-2-thread-1] Bundle org.apache.aries.jpa.container [72] EventDispatcher: Error during dispatch. (javax.persistence.PersistenceException: [PersistenceUnit: booking-hibernate] Unable to build Hibernate SessionFactory)
javax.persistence.PersistenceException: [PersistenceUnit: booking-hibernate] Unable to build Hibernate SessionFactory

这是诊断:

Missing dependencies:
(&(osgi.unit.name=booking-hibernate) 
(objectClass=javax.persistence.EntityManager))

编辑 #2:我使用的是 JDK11 (11.0.2)。

谢谢, 乔恩

【问题讨论】:

希望您已经在BookingServiceImpl 中使用jpaTemplate 参数初始化了contructor 我没有对代码做任何修改——不过我会试试的。 【参考方案1】:

看来问题是JDK11。我已经迁移到 JDK8 并且它正在工作。

这是提示我的帖子:https://hibernate.atlassian.net/browse/HHH-12924

【讨论】:

以上是关于如何配置 Hibernate 以在 Karaf JPA 示例中工作?的主要内容,如果未能解决你的问题,请参考以下文章

您可以在不使用 JTA 的情况下在 OSGi 环境(如 Karaf)中使用 Hibernate 5.2 StatelessSession 吗?

如何让 Spring JPA、Hibernate 和 OSGi 发挥出色?

从 Spring 依赖管理获取 Hibernate 版本以在 Gradle 中配置插件

重新启动 karaf 所需的捆绑包更新

Apache Karaf配置远程调试

如何强制初始化 Hibernate JPA 代理以在 JSON 调用中使用它