mysql - Playframework Hibernate JPA 无法连接到数据库

标签 mysql hibernate jpa playframework

我正在尝试配置 Hibernate JPA 以访问数据库。在不使用 Hibernate JPA 的情况下,它可以很好地访问数据库,但是在使用 Hibernate JPA 时却不行。

我正在学习本教程:

https://www.playframework.com/documentation/2.5.x/JavaJPA

这些是我的步骤:

构建.sbt

//Hibernate JPA 
libraryDependencies ++= Seq(   javaJpa,   "org.hibernate" % "hibernate-entitymanager" % "5.1.0.Final" // replace by your jpa implementation ) 

//JPA 
PlayKeys.externalizeResources := false

//Driver for mysql 
libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"

conf/应用程序.conf

    db {
        # You can declare as many datasources as you want.
        # By convention, the default datasource is named `default`

        default.driver = "com.mysql.jdbc.Driver"
        default.url = "jdbc:mysql://localhost:3306/sakila"
        default.username = root
        default.password = "root"

        default.jndiName=DefaultDS
        jpa.default=defaultPersistenceUnit

        default.logSql=true
    }

conf/META_INF/persistence.xml

    <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
         version="2.1">

      <persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <non-jta-data-source>DefaultDS</non-jta-data-source>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
        </properties>
      </persistence-unit>
    </persistence>

错误信息:

! @70fdppp3i - Internal server error, for (GET) [/count] ->

play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [jpa]]
        at play.api.Configuration$.configError(Configuration.scala:154)
        at play.api.Configuration.reportError(Configuration.scala:806)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:48)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:42)
        at scala.collection.immutable.List.foreach(List.scala:381)
        at play.api.db.DefaultDBApi.connect(DefaultDBApi.scala:42)
        at play.api.db.DBApiProvider.get$lzycompute(DBModule.scala:72)
        at play.api.db.DBApiProvider.get(DBModule.scala:62)
        at play.api.db.DBApiProvider.get(DBModule.scala:58)
        at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
Caused by: play.api.Configuration$$anon$1: Configuration error[either dataSource or dataSourceClassName is required]
        at play.api.Configuration$.configError(Configuration.scala:154)
        at play.api.PlayConfig.reportError(Configuration.scala:996)
        at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:70)
        at play.api.db.PooledDatabase.createDataSource(Databases.scala:199)
        at play.api.db.DefaultDatabase.dataSource$lzycompute(Databases.scala:123)
        at play.api.db.DefaultDatabase.dataSource(Databases.scala:121)
        at play.api.db.DefaultDatabase.getConnection(Databases.scala:142)
        at play.api.db.DefaultDatabase.getConnection(Databases.scala:138)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:44)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:42)
Caused by: java.lang.IllegalArgumentException: either dataSource or dataSourceClassName is required
        at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:785)
        at play.api.db.HikariCPConfig.toHikariConfig(HikariCPModule.scala:141)
        at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:57)
        at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:54)
        at scala.util.Try$.apply(Try.scala:192)
        at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:54)
        at play.api.db.PooledDatabase.createDataSource(Databases.scala:199)
        at play.api.db.DefaultDatabase.dataSource$lzycompute(Databases.scala:123)
        at play.api.db.DefaultDatabase.dataSource(Databases.scala:121)
        at play.api.db.DefaultDatabase.getConnection(Databases.scala:142)

屏幕上的错误信息:

enter image description here

如何解决?

我正在使用 Play 框架 2.5

最佳答案

我认为您的 jpa.default 属性放错了地方。像这样尝试:

db {
    # You can declare as many datasources as you want.
    # By convention, the default datasource is named `default`

    default.driver = "com.mysql.jdbc.Driver"
    default.url = "jdbc:mysql://localhost:3306/sakila"
    default.username = root
    default.password = "root"

    default.jndiName=DefaultDS

    default.logSql=true
}

jpa.default=defaultPersistenceUnit

关于mysql - Playframework Hibernate JPA 无法连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37965388/

相关文章:

mysql - 针对时间变化数据的 View 与表的性能

java - 找不到类 org.apache.commons.dbcp.BasicDataSource

database - 从 Hibernate 中的 java.sql.Blob 获取流

java - JPA:覆盖自动生成的 ID

php - 条件下拉代码点火器

从另一个表中选择 MySQL 触发器更新

java - 如何显示在 pgAdmin3 中使用 Hibernate 插入的文本值?

java - 使用 native SQL 创建表适用于 Hibernate/HSQLDB,插入失败。为什么?

JPA:映射 Map<Enum, Entity>

用户的 PHP/MYSQL 日期时间范围重叠