JPA数据源转换Tomcat数据源 配置问题 随笔

在使用到jpa 的开发过程中,有时会用到数据源转换的问题,

以下方法只是我个人遇到的一种情况及解决方法,如有不同的情况,请大家贴出来供大家参考

 

tomcat启动时遇到:
Hibernate Dialect must be explicitly set 解决方法
错误提示:没有设置数据库方言(dialect)

persistence.xml
<persistence-unit name="GameInfoPU"
  transaction-type="RESOURCE_LOCAL">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
  <class>com.business.userPass</class>
 </persistence-unit>
</persistence>

 

//Tomcat数据源配置

<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>

<!--配置数据源-->
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="20" maxIdle="2" maxWait="5000" name="hibernate/mysql" password="admin" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/dbcurr" username="root" />

</Context>

此时的配置启动时会出现:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set

解决方法: 修改persistence.xml文件为如下:

persistence.xml
<persistence-unit name="userPassPU"
  transaction-type="RESOURCE_LOCAL">
  <provider>org.hibernate.ejb.HibernatePersistence</provider> //默认jpa本身数据源
  <non-jta-data-source>java:comp/env/hibernate/mysql</non-jta-data-source> // 设置数据库方言,默认去找tomcat数据源
  <class>com.business.userPass</class> //实体类,表
 </persistence-unit>
</persistence>

 

默认jpa本身数据源  tomcat数据源 不能同时都配置,否则出错,冲突

以上方法只是我个人遇到的一种情况及解决方法,如有不同的情况,请大家贴出来供大家参考

你可能感兴趣的:(tomcat,Hibernate,mysql,xml,jpa)