2012-06-28 20 views

risposta

9

Questo è dovuto al fatto play.db.jpa.Model è un gioco 1.xe 2.x. play.db.ebean.Model è un gioco

Per utilizzare JPA in Play 2.x, vedere http://www.playframework.org/documentation/2.0/JavaJPA

+0

oh davvero? ma perché non riesco a trovare il metodo '' find() '' di Model allora? – doniyor

+1

ora devo implementare il metodo di ricerca da solo? come .. '' statico pubblico Cerca utente (ID lungo) {'' '' return JPA.em(). Find (User.class, id); } '' – doniyor

+1

sì ... è uno dei pro/contro di Play 2.x ... è meno magico, quindi più lavoro, ma perché è meno magico, è più chiaro che cosa sta succedendo. – Codemwnci

3

Il play.db.jpa.Model classe non è disponibile dal gioco 2.0. La soluzione che ho trovato a questo problema è:

  • In YourProject/conf/application.conf, dichiarare la configurazione JPA:

db.default.driver = org.h2.Driver
db.default.url =" jdbc: h2: mem: play"
db.default.jndiName = DefaultDS

E l'unità di persistenza:

jpa.default = defaultPersistenceUnit

  • Creare un META-INF nuovo pacchetto chiamato a ProgettoUtente/conf/

  • All'interno di questo pacchetto di creare un file denominato persistence.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.ejb.HibernatePersistence</provider> 
      <non-jta-data-source>DefaultDS</non-jta-data-source> 
      <properties> 
       <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> 
      </properties> 
     </persistence-unit> 


</persistence> 
  • Al YourProject/project/Build.scala modificare le dipendenze di aggiungere il seguente:

appDependencies val = Seq (
// aggiunge il progetto dipendenze qui,
javacore,
javaJdbc,
javaJpa,
"org.hibernate"% "hibernate-entitymanager"% "4.2.1.Final"
)

Inoltre è possibile disattivare Ebean se non si ha intenzione di usarlo con:

val main = play.Project(appName, appVersion, appDependencies).settings(
    ebeanEnabled := false 
) 
  • Dopo questa operazione, eseguire il gioco eclissi sul progetto e aggiornare.

Spero che questo aiuti.

+0

"jpa.default = defaultPersistenceUnit" in application.conf è la parte in cui ho trascorso alcune ore cercando di capire. Ancora non l'ho trovato documentato da nessuna parte ma nella sorgente di JPAPlugin. :( –

+0

@RodneyGitzel è nella documentazione 2.2 sotto JPA: http://www.playframework.com/documentation/2.2.x/JavaJPA, vedere l'ultima parte di "Creazione di un'unità di persistenza" – chris

+2

@chris purtroppo è stato escluso dei documenti 2.1: http://www.playframework.com/documentation/2.1.x/JavaJPA –

Problemi correlati