Play Framework 2.5 で複数DB接続
スタックオーバーフローの利用が初めてのものです。
やり取りなどで、ぎこちない部分が多々あるかと思いますが、
どうかよろしくお願いいたします。
仕事でPlay Framework 2.5の利用を検討しております。
公式のドキュメントを見ながら設定を進めておりますが、
複数DB接続の箇所で手詰まりとなっております。
コードはgithubにアップロードしております。
https://github.com/junichimura/play2.5_multiple_database_connection
(動作させるためには、事前に公式より、activator最新版をダウンロードしておく必要があります。)
もちろんgithubのファイルをダウンロードしたくない方がいらっしゃれば、Web上でコードを開示させていただきます。
また、現在発生しているエラーは以下のようなものです。
[error] application -
! @70c4075ao - Internal server error, for (GET) [/second/set/sample] ->
play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[CompletionException: javax.persistence.PersistenceException: The type [class models.second.SampleTable2] is not a registered entity? If you don't explicitly list the entity classes to use Ebean will search for them in the classpath. If the entity is in a Jar check the ebean.search.jars property in ebean.properties file or check ServerConfig.addJar().]]
at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:280)
at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:206)
at play.api.GlobalSettings$class.onError(GlobalSettings.scala:160)
at play.api.DefaultGlobal$.onError(GlobalSettings.scala:188)
at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:98)
at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100)
at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99)
at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:344)
at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:343)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
Caused by: java.util.concurrent.CompletionException: javax.persistence.PersistenceException: The type [class models.second.SampleTable2] is not a registered entity? If you don't explicitly list the entity classes to use Ebean will search for them in the classpath. If the entity is in a Jar check the ebean.search.jars property in ebean.properties file or check ServerConfig.addJar().
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593)
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:21)
at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:18)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.processBatch$1(BatchingExecutor.scala:63)
Caused by: javax.persistence.PersistenceException: The type [class models.second.SampleTable2] is not a registered entity? If you don't explicitly list the entity classes to use Ebean will search for them in the classpath. If the entity is in a Jar check the ebean.search.jars property in ebean.properties file or check ServerConfig.addJar().
at com.avaje.ebeaninternal.server.persist.DefaultPersister.createRequest(DefaultPersister.java:1189)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.insert(DefaultPersister.java:208)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.save(DefaultPersister.java:199)
at com.avaje.ebeaninternal.server.core.DefaultServer.save(DefaultServer.java:1461)
at com.avaje.ebeaninternal.server.core.DefaultServer.save(DefaultServer.java:1454)
at com.avaje.ebean.Model.save(Model.java:208)
at controllers.CheckFind.setS2(CheckFind.java:40)
at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$4$$anonfun$apply$4.apply(Routes.scala:167)
at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$4$$anonfun$apply$4.apply(Routes.scala:167)
at play.core.routing.HandlerInvokerFactory$$anon$4.resultCall(HandlerInvoker.scala:157)
なお、該当するSampleTable2クラスには、@Entity アノテーションを付加している状態です。
application.confでの設定は、以下の通りです。
db {
default.driver=com.mysql.jdbc.Driver
default.url="jdbc:mysql://localhost/skysea?characterEncoding=UTF-8"
default.username=skysea
default.password="skysea"
second.driver=com.mysql.jdbc.Driver
second.url="jdbc:mysql://localhost/skysea2?characterEncoding=UTF-8"
second.username=skysea
second.password="skysea"
# You can turn on SQL logging for any datasource
# https://www.playframework.com/documentation/latest/Highlights25#Logging-SQL-statements
#default.logSql=true
}
ebean {
default = ["models.first.*"]
second = ["models.second.*"]
}
知見をお持ちの方がいらっしゃいましたら、お力を貸していただければ幸いです。
どうかよろしくお願いいたします。