You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已在build.gradle引入Hibernate依赖却无法解析HibernatePersistenceProvider

解决JPA提示"No Persistence provider for EntityManager named recipes"的问题

根据你提供的错误日志、配置文件和依赖信息,我帮你梳理几个关键修复点:

1. 修正persistence.xml中持久化提供者类名的空格问题

这是最直接的问题——你的<provider>标签里类名前后有多余空格,会导致JPA无法正确识别类路径:

<!-- 错误写法:类名前后存在空格 -->
<provider> org.hibernate.jpa.HibernatePersistenceProvider </provider>

<!-- 正确写法:去掉前后空格 -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

2. 验证Hibernate版本与类名的匹配性

你使用的hibernate-core:5.0.5.Final版本中,org.hibernate.jpa.HibernatePersistenceProvider是有效的持久化提供者类,所以只要修正空格问题,类名就能被正确解析。如果后续升级到Hibernate 5.3+版本,这个类会被标记为过时,那时可以替换为org.hibernate.persistence.provider.HibernatePersistenceProvider,当前版本无需调整。

3. 确保Gradle依赖正确同步到IntelliJ

IntelliJ提示无法解析HibernatePersistenceProvider,大概率是依赖未正确导入或同步:

  • 点击IntelliJ右侧Gradle面板的刷新按钮(🔄),重新同步项目依赖;
  • 或者在终端执行命令强制刷新依赖并重新构建:
./gradlew clean build --refresh-dependencies

4. 确认persistence.xml的位置与打包路径

你把persistence.xml放在src/main/resources/META-INF是JPA的标准配置位置,Java插件默认会将该目录下的文件打包到build/classes/main/META-INF中。可以检查构建后的目录是否存在该文件,确保配置文件被正确加载到类路径。


附:你的错误日志

Task :JPABootstrapping.main() FAILED
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named recipes
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at setup.JPABootstrapping.main(JPABootstrapping.java:10)
Execution failed for task ':JPABootstrapping.main()'.

Process 'command '/usr/lib/jvm/java-14-openjdk-amd64/bin/java'' finished with non-zero exit value 1

修正后的persistence.xml示例

<persistence>
  <persistence-unit name="recipes">
    <description>Hibernate Tips</description>
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL81Dialect" />
      <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
      <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://192.168.122.242:5432/recipes" />
      <property name="javax.persistence.jdbc.user" value="postgres" />
      <property name="javax.persistence.jdbc.password" value="postgres" />
    </properties>
  </persistence-unit>
</persistence>

内容的提问来源于stack exchange,提问作者lainatnavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:16:43