Maven Web项目集成Hibernate连接MySQL提示找不到合适驱动
Maven Web项目中Hibernate连接MySQL出现"No suitable driver found"问题
我是Hibernate初学者,之前创建普通Maven项目时能正常连接MySQL数据库,但搭建Maven Web项目并复用相同的hibernate.cfg.xml配置时,出现了"No suitable driver found"错误。我排查过数据库URL和依赖库,参考了同类问题的解决方案还是没解决,也没找到针对Maven Web项目的特定方案。我用的是Eclipse Neon IDE、MySQL 8版本,项目没有普通Web项目的lib文件夹,不确定是不是项目结构的问题。
报错信息
May 11, 2023 11:32:02 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: No suitable driver found for jdbc:mysql://localhost:3306/myhiber
org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService.....
pom.xml内容
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.todo</groupId> <artifactId>NoteTaker</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>NoteTaker Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.4.5.Final</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>NoteTaker</finalName> </build> </project>
hibernate.cfg.xml内容
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver.class">com.mysql.cj.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/myhiber</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="hbm2ddl.auto">update</property> <property name="show_sql">true</property> <mapping class="com.entities.Note"/> </session-factory> </hibernate-configuration>
解决方案
- 调整MySQL驱动依赖范围:给mysql-connector-java依赖添加
<scope>runtime</scope>,确保驱动包在运行时被Web容器加载:<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> <scope>runtime</scope> </dependency> - 检查Eclipse部署配置:右键项目 →
Properties→Deployment Assembly,确认Maven Dependencies已添加到部署路径。若没有,点击Add→Java Build Path Entries→ 选择Maven Dependencies后应用更改。 - 修正Hibernate方言:MySQL 8适配
MySQL8Dialect,替换原配置中的MySQL5Dialect:<property name="dialect">org.hibernate.dialect.MySQL8Dialect</property> - 完善数据库URL:MySQL 8建议添加时区参数,避免连接异常:
<property name="connection.url">jdbc:mysql://localhost:3306/myhiber?serverTimezone=UTC</property> - 验证驱动包存在性:查看项目
target/NoteTaker/WEB-INF/lib目录,确认mysql-connector-java-8.0.28.jar存在。若缺失,执行mvn clean install重新构建项目。
内容的提问来源于stack exchange,提问作者Yayati k
相关产品推荐
相关产品推荐

