用到的依赖
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- mysql connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<!-- hibernate entitymanager -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.10.Final</version>
</dependency>
<!-- hibernate c3p0 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.4.10.Final</version>
</dependency>
</dependencies>
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="jpaUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa?useSSL=false&serverTimezone=utc"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
环境
mysql8
解决
在网上搜了很多,有些人说是数据库连接的密码等写错了,我仔细确认了数据库连接配置,没有问题;还有人说是要配置方言,也有人说配置方言了也没用,我抱着试一试的心态在persistence中配置了一下方言
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
程序依然报错,但这一次的报错的原因很清楚,英文翻译过来大概是serverTimezone没有utc什么什么的,我就把serverTimezone改为如下,并且删除了上面添加的方言配置,所以归根结底和第一次报错说的’hibernate.dialect’ not set没有任何关系
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa?useSSL=false&serverTimezone=Asia/Shanghai"/>
程序正常运行
具体是为什么我也不清楚,之前每次连接数据库serverTimezone=utc都没有问题,不知道为什么在这个项目里就报错