2015-12-11 2 views
0

Мы пытаемся использовать JPA в нашем приложении Play 2.4. Когда мы пытаемся запустить наш Applicatin мы получим следующее сообщение об ошибке "Ошибка инъекционного конструктор, javax.persistence.PersistenceException: Невозможно создать менеджер предприятие завод"Play 2.4 Hibernate JPA mysql Невозможно построить фабрику управления объектами

build.sbt:

lazy val root = (project in file(".")).enablePlugins(PlayJava) 


scalaVersion := "2.11.6" 

libraryDependencies ++= Seq(
    javaJdbc, 
    cache, 
    javaWs, 
    javaJpa, 
    "org.hibernate" % "hibernate-entitymanager" % "4.3.4.Final", 
    "org.hibernate.javax.persistence" % "hibernate-jpa-2.1-api" % "1.0.0.Final", 
    "mysql" % "mysql-connector-java" % "5.1.37" 
) 

// Play provides two styles of routers, one expects its actions to be injected, the 
// other, legacy style, accesses its actions statically. 
routesGenerator := InjectedRoutesGenerator 
PlayKeys.externalizeResources := falsed 

CONF /META-INF/persitence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
      version="2.0"> 

    <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.MYSQL5Dialect"/> 
     </properties> 
    </persistence-unit> 

</persistence> 

application.conf:

jpa.default=defaultPersistenceUnit 
db.default.driver=com.mysql.jdbc.Driver 
db.default.url="jdbc:mysql://localhost/test" 
db.default.username=root 
db.default.password="root" 
db.default.jndiName=DefaultDS 
play.evolutions.enabled=false 

модель:

package models; 

import javax.persistence.Basic; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 

/** 
* Created by Dominik on 11.12.2015. 
*/ 
@Entity 
public class Users { 
    private int userId; 
    private String name; 

    @Id 
    @Column(name = "User_ID", nullable = false) 
    public int getUserId() { 
     return userId; 
    } 

    public void setUserId(int userId) { 
     this.userId = userId; 
    } 

    @Basic 
    @Column(name = "Name", nullable = true, length = 45) 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Override 
    public boolean equals(Object o) { 
     if (this == o) return true; 
     if (o == null || getClass() != o.getClass()) return false; 

     Users users = (Users) o; 

     if (userId != users.userId) return false; 
     if (name != null ? !name.equals(users.name) : users.name != null) return false; 

     return true; 
    } 

    @Override 
    public int hashCode() { 
     int result = userId; 
     result = 31 * result + (name != null ? name.hashCode() : 0); 
     return result; 
    } 
} 

трассировки стека:

--- (Running the application, auto-reloading is enabled) --- 

[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 

(Server started, use Ctrl+D to stop and go back to the console...) 

[info] Compiling 1 Java source to C:\xampp\htdocs\PROBROWSE2ECK\target\scala-2.11\classes... 
[info] - application - Creating Pool for datasource 'default' 
[info] - play.api.db.HikariCPConnectionPool - datasource [default] bound to JNDI as DefaultDS 
[info] - play.api.db.DefaultDBApi - Database [default] connected at jdbc:mysql://localhost/test 
[info] - play.api.Play - Application started (Dev) 
[error] - application - 

! @6od9ig00a - Internal server error, for (GET) [/test] -> 

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[ProvisionException: Unable to provision, see the following errors: 

1) Error injecting constructor, javax.persistence.PersistenceException: Unable to build entity manager factory 
    at play.db.jpa.DefaultJPAApi$JPAApiProvider.<init>(DefaultJPAApi.java:35) 
    at play.db.jpa.DefaultJPAApi$JPAApiProvider.class(DefaultJPAApi.java:30) 
    while locating play.db.jpa.DefaultJPAApi$JPAApiProvider 
    while locating play.db.jpa.JPAApi 

1 error]] 
     at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:265) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:191) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.api.GlobalSettings$class.onError(GlobalSettings.scala:179) [play_2.11-2.4.3.jar:2.4.3] 
     at play.api.DefaultGlobal$.onError(GlobalSettings.scala:212) [play_2.11-2.4.3.jar:2.4.3] 
     at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:94) [play_2.11-2.4.3.jar:2.4.3] 
     at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$9$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:158) [play-netty-server_2.11-2.4.3.jar:2 
.4.3] 
     at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$9$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:155) [play-netty-server_2.11-2.4.3.jar:2 
.4.3] 
     at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) [scala-library-2.11.6.jar:na] 
     at scala.util.Failure$$anonfun$recover$1.apply(Try.scala:215) [scala-library-2.11.6.jar:na] 
     at scala.util.Try$.apply(Try.scala:191) [scala-library-2.11.6.jar:na] 
     at scala.util.Failure.recover(Try.scala:215) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) [scala-library-2.11.6.jar:na] 
     at play.api.libs.iteratee.Execution$trampoline$.executeScheduled(Execution.scala:109) [play-iteratees_2.11-2.4.3.jar:2.4.3] 
     at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:71) [play-iteratees_2.11-2.4.3.jar:2.4.3] 
     at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.Promise$class.complete(Promise.scala:55) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:23) [scala-library-2.11.6.jar:na] 
     at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40) [akka-actor_2.11-2.3.13.jar:na] 
     at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) [akka-actor_2.11-2.3.13.jar:na] 
     at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.11.6.jar:na] 
Caused by: com.google.inject.ProvisionException: Unable to provision, see the following errors: 

1) Error injecting constructor, javax.persistence.PersistenceException: Unable to build entity manager factory 
    at play.db.jpa.DefaultJPAApi$JPAApiProvider.<init>(DefaultJPAApi.java:35) 
    at play.db.jpa.DefaultJPAApi$JPAApiProvider.class(DefaultJPAApi.java:30) 
    while locating play.db.jpa.DefaultJPAApi$JPAApiProvider 
    while locating play.db.jpa.JPAApi 

1 error 
     at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1025) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051) ~[guice-4.0.jar:na] 
     at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:321) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.inject.DelegateInjector.instanceOf(DelegateInjector.java:22) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.db.jpa.JPA.jpaApi(JPA.java:46) ~[play-java-jpa_2.11-2.4.3.jar:2.4.3] 
     at play.db.jpa.JPA.withTransaction(JPA.java:159) ~[play-java-jpa_2.11-2.4.3.jar:2.4.3] 
     at play.db.jpa.TransactionalAction.call(TransactionalAction.java:16) ~[play-java-jpa_2.11-2.4.3.jar:2.4.3] 
     at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94) ~[play_2.11-2.4.3.jar:2.4.3] 
     at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [scala-library-2.11.6.jar:na] 
     at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:40) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70) [play-iteratees_2.11-2.4.3.jar:2.4.3] 
     at play.core.j.HttpExecutionContext.execute(HttpExecutionContext.scala:32) ~[play_2.11-2.4.3.jar:2.4.3] 
     at scala.concurrent.impl.Future$.apply(Future.scala:31) ~[scala-library-2.11.6.jar:na] 
     at scala.concurrent.Future$.apply(Future.scala:492) ~[scala-library-2.11.6.jar:na] 
     at play.core.j.JavaAction.apply(JavaAction.scala:94) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.utils.Threads$.withContextClassLoader(Threads.scala:21) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:104) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:103) ~[play_2.11-2.4.3.jar:2.4.3] 
     at scala.Option.map(Option.scala:146) ~[scala-library-2.11.6.jar:na] 
     at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:103) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:96) ~[play_2.11-2.4.3.jar:2.4.3] 
     at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524) ~[play-iteratees_2.11-2.4.3.jar:2.4.3] 
     at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524) ~[play-iteratees_2.11-2.4.3.jar:2.4.3] 
     at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560) ~[play-iteratees_2.11-2.4.3.jar:2.4.3] 
     at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560) ~[play-iteratees_2.11-2.4.3.jar:2.4.3] 
     at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:536) ~[play-iteratees_2.11-2.4.3.jar:2.4.3] 
     at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:536) ~[play-iteratees_2.11-2.4.3.jar:2.4.3] 
     at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [scala-library-2.11.6.jar:na] 
     at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [scala-library-2.11.6.jar:na] 
     ... 6 common frames omitted 
Caused by: javax.persistence.PersistenceException: Unable to build entity manager factory 
     at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:81) ~[hibernate-entitymanager-4.3.4.Final.jar:4.3.4.Fin 
al] 
     at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54) ~[hibernate-entitymanager-4.3.4.Final.jar:4.3.4.Final] 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) ~[hibernate-jpa-2.1-api-1.0.0.Final.jar:1.0.0.Final] 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) ~[hibernate-jpa-2.1-api-1.0.0.Final.jar:1.0.0.Final] 
     at play.db.jpa.DefaultJPAApi.start(DefaultJPAApi.java:56) ~[play-java-jpa_2.11-2.4.3.jar:2.4.3] 
     at play.db.jpa.DefaultJPAApi$JPAApiProvider.<init>(DefaultJPAApi.java:42) ~[play-java-jpa_2.11-2.4.3.jar:2.4.3] 
     at play.db.jpa.DefaultJPAApi$JPAApiProvider$$FastClassByGuice$$dcd4cdbd.newInstance(<generated>) ~[guice-4.0.jar:2.4.3] 
     at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:61) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) ~[guice-4.0.jar:na] 
     at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) ~[guice-4.0.jar:na] 
     ... 38 common frames omitted 
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MYSQL5Dialect] as strategy [org.hibernate.dialec 
t.Dialect] 
     at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:128) ~[hibernate-core-4.3.4.Final.jar:4.3.4. 
Final] 
     at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:155) ~[hibernate-core-4.3.4.Final.jar:4.3.4 
.Final] 
     at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:136) ~[hibernate-core-4.3.4.Final.jar:4.3.4.Final] 
     at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:78) ~[hibernate-core-4.3.4.Final.jar:4.3.4.Final] 
     at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:68) ~[hibernate-core-4.3.4.Final.jar:4.3.4.Final] 
     at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:165) ~[hibernate-core-4.3.4.Final.jar:4.3.4.Final] 
     at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89) ~[hibernate-core-4.3.4.Final.jar:4.3.4.Final 
] 
     at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206) ~[hibernate-core-4.3.4.Final.jar:4.3.4.Final] 
     at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178) ~[hibernate-core-4.3.4.Final.jar:4.3.4.Final] 
     at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885) ~[hibernate-core-4.3.4.Final.jar:4.3.4.Final] 
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843) ~[hibernate-core-4.3.4.Final.jar:4.3.4.Final] 
     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) ~[hibernate-entitymanager-4.3.4.Final.jar:4.3.4 
.Final] 
     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843) ~[hibernate-entitymanager-4.3.4.Final.jar:4.3.4 
.Final] 
     at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:397) ~[hibernate-core-4.3.4.Final.jar:4.3.4.Final] 
     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842) ~[hibernate-entitymanager-4.3.4.Final.jar:4.3.4.Fin 
al] 
     at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:73) ~[hibernate-entitymanager-4.3.4.Final.jar:4.3.4.Fin 
al] 
     ... 58 common frames omitted 

Может кто-нибудь помочь нам, или есть кто-нибудь имеет родственную задачу? Мы только нашли решения для Play 2.1.2.2,2.3, и они не работали для нас.

Заранее благодарен!

ответ

0
@Entity 
@Table(name = "your_table", schema = "your_schema") 
public class Users {... 
} 

Вы можете начать с этого.

+0

спасибо @Uly Marins, что вы нам очень помогли – Dominikz

+0

@ Dominikz, что именно это вам помогло? –

1

Ошибка довольно ясна, и я не думаю, что она работает с любыми предыдущими версиями игры.

Ошибка говорит

Невозможно разрешить имя [org.hibernate.dialect.MYSQL5Dialect] как стратегия [org.hibernate.dialect.Dialect]

Правильный диалект org.hibernate.dialect.MySQL5Dialect (обратите внимание на нижний регистр «y»).

+0

спасибо @Augusto было очень полезно и решила наша проблема – Dominikz

+0

Не стесняйтесь выбирать мой авайер и upvote :). – Augusto

Смежные вопросы