Java Play Framework无法读取数据库配置并插入JPAApi
我正在尝试使用play 2.5,但失败了 我的控制器:Java Play Framework无法读取数据库配置并插入JPAApi,java,hibernate,jpa,playframework,playframework-2.0,Java,Hibernate,Jpa,Playframework,Playframework 2.0,我正在尝试使用play 2.5,但失败了 我的控制器: public class HomeController extends Controller { private JPAApi db; @Inject public HomeController(JPAApi api) { this.db = api; } public Result index(String name) { return ok(views.htm
public class HomeController extends Controller {
private JPAApi db;
@Inject
public HomeController(JPAApi api) {
this.db = api;
}
public Result index(String name) {
return ok(views.html.index.render("hello", name, Collections.singletonList("world")));
}
}
My 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="readwritePU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<non-jta-data-source>ReadWriteDS</non-jta-data-source>
<properties>
<property name="hibernate.connection.isolation" value="1" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL94Dialect" />
<property name="hibernate.cache.use_second_level_cache" value="false" />
<property name="hibernate.cache.use_query_cache" value="false" />
</properties>
</persistence-unit>
</persistence>
在上面的application.conf中未启用或启用池配置键时出现错误:
No configuration setting found for key 'pool'
Error in custom provider, com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'pool'
while locating play.api.db.DBApiProvider
while locating play.api.db.DBApi
for field at play.api.db.NamedDatabaseProvider.dbApi(DBModule.scala:80)
while locating play.api.db.NamedDatabaseProvider
at com.google.inject.util.Providers$GuicifiedProviderWithDependencies.initialize(Providers.java:149)
at play.api.db.DBModule$$anonfun$namedDatabaseBindings$1.apply(DBModule.scala:34):
Binding(interface play.api.db.Database qualified with QualifierInstance(@play.db.NamedDatabase(value=default)) to ProviderTarget(play.api.db.NamedDatabaseProvider@7af4d3bc)) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'pool'
pool has type STRING rather than OBJECT
Error in custom provider, com.typesafe.config.ConfigException$WrongType: application.conf @ file:/E:/workspace2/coup/target/scala-2.11/classes/application.conf: 344: pool has type STRING rather than OBJECT
while locating play.api.db.DBApiProvider
while locating play.api.db.DBApi
for parameter 0 at play.db.DefaultDBApi.<init>(DefaultDBApi.java:27)
at play.db.DefaultDBApi.class(DefaultDBApi.java:27)
while locating play.db.DefaultDBApi
while locating play.db.DBApi
for field at play.db.DBModule$NamedDatabaseProvider.dbApi(DBModule.java:61)
while locating play.db.DBModule$NamedDatabaseProvider
at com.google.inject.util.Providers$GuicifiedProviderWithDependencies.initialize(Providers.java:149)
at play.db.DBModule.bindings(DBModule.java:40):
Binding(interface play.db.Database qualified with QualifierInstance(@play.db.NamedDatabase(value=default)) to ProviderTarget(play.db.DBModule$NamedDatabaseProvider@3ec40700)) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
Caused by: com.typesafe.config.ConfigException$WrongType: application.conf @ file:/E:/workspace2/coup/target/scala-2.11/classes/application.conf: 344: pool has type STRING rather than OBJECT
找不到键“池”的配置设置
自定义提供程序com.typesafe.config.ConfigException$中出错:找不到键“pool”的配置设置
查找play.api.db.dbaprovider时
查找play.api.db.DBApi时
for field at play.api.db.NamedDatabaseProvider.dbApi(DBModule.scala:80)
查找play.api.db.NamedDatabaseProvider时
位于com.google.inject.util.Providers$GuicifiedProviderWithDependencies.initialize(Providers.java:149)
在play.api.db.DBModule$$anonfun$namedatabasebindings$1.apply(DBModule.scala:34)中:
绑定(接口play.api.db.Database,使用限定符instance(@play.db.namedatabase(value=default))限定)到ProviderTarget(play.api.db)。NamedDatabaseProvider@7af4d3bc))(通过modules:com.google.inject.util.modules$OverrideModule->play.api.inject.guice.GuiceableModuleConversions$$anon$1)
原因:com.typesafe.config.ConfigException$丢失:找不到键“池”的配置设置
池具有类型字符串而不是对象
自定义提供程序com.typesafe.config.ConfigException$ErrorType:application.conf@file:/E:/workspace2/coup/target/scala-2.11/classes/application.conf:344中出错:池具有类型字符串而不是对象
查找play.api.db.dbaprovider时
查找play.api.db.DBApi时
用于play.db.DefaultDBApi处的参数0。(DefaultDBApi.java:27)
at play.db.DefaultDBApi.class(DefaultDBApi.java:27)
查找play.db.DefaultDBApi时
查找play.db.DBApi时
for field at play.db.DBModule$NamedDatabaseProvider.dbApi(DBModule.java:61)
查找play.db.DBModule$NamedDatabaseProvider时
位于com.google.inject.util.Providers$GuicifiedProviderWithDependencies.initialize(Providers.java:149)
play.db.DBModule.bindings(DBModule.java:40):
绑定(接口play.db.Database通过限定符instance(@play.db.namedatabase(value=default))限定到ProviderTarget(play.db.DBModule$NamedDatabaseProvider@3ec40700))(通过modules:com.google.inject.util.modules$OverrideModule->play.api.inject.guice.GuiceableModuleConversions$$anon$1)
原因:com.typesafe.config.ConfigException$ErrorType:application.conf@file:/E:/workspace2/coup/target/scala-2.11/classes/application.conf:344:池具有类型字符串而不是对象
我尝试了很多不同的选择和组合,我已经没有主意了。谷歌甚至不知道这些错误。Play停止工作,我必须重新启动它。试试看
jpa.default=readwritePU
db {
default {
hikaricp {
dataSourceClassName=org.postgresql.ds.PGSimpleDataSource
dataSource {
serverName = localhost
databaseName = "mydbname"
user = "postgres"
password = "123456"
}
}
jndiName=ReadWriteDS
}
}
试一试
jpa.default=readwritePU
db {
default {
hikaricp {
dataSourceClassName=org.postgresql.ds.PGSimpleDataSource
dataSource {
serverName = localhost
databaseName = "mydbname"
user = "postgres"
password = "123456"
}
}
jndiName=ReadWriteDS
}
}