2015-08-28 218 views
0

好的。我對Play Framework產生了很大的困惑。 (他們是否像他們的產品一樣經常更新他們的教程和文檔?)。我正在嘗試做CRUD應用程序的教程,並且我使用的是JPA而不是Ebean(因爲最後一個不起作用,但是,正如第一個那樣)。編譯器說,它找不到類模型。播放框架db.play.JPA

互聯網提供獲得正確的依賴關係,我已經嘗試了很多。但我無法得到正確的。任何人都可以幫助我如何使這個最簡單的事情工作?

這裏是我的路線:

# Home page 
GET /       controllers.Application.index() 
POST /person    controllers.Application.addPerson() 

這裏是應用程序的配置,這是oncommented

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

built.sbt依賴性:

libraryDependencies ++= Seq(
    Jdbc, 
    javaJpa, 
    "org.hibernate" % "hibernate-entitymanager" % "4.3.5.Final" 
) 

Application.java:

package controllers; 

import models.Person; 
import play.*; 
import play.data.Form; 
import play.mvc.*; 

import views.html.*; 
public class Application extends Controller { 

    public Result index() { 
     return ok(index.render("Your new application is ready.")); 
    } 

    public Result addPerson(){ 
     Person person = Form.form(Person.class).bindFromRequest().get(); 
     person.save(); 
     return redirect(routes.Application.index()); 
    } 

} 

和模型Person.java:

package models; 

import java.util.*; 
import javax.persistence.*; 
import play.db.jpa.*; 

@Entity 
public class Person extends Model{ 
    @Id 
    public String id; 
    public String name; 


} 
+0

爲什麼從'play.db.ebean.Model'擴展'Person'?即使您不使用Ebean,但是JPA有需要嗎?你有沒有嘗試使用'import play.db.ebean.Model;'? –

+0

是的,我嘗試過(加上ebean和東西的依賴關係,編譯器會說play.db.ebean不存在 – Laura

+0

,實際上,我更喜歡用JPA來做,但首先嚐試了Ebean,因爲它是在playframework tutorial – Laura

回答

0

通過使用JPA而不Ebean應該是這樣描述here 例如(沒有實際測試)等休耕代碼:

public Result addPerson(){ 
    Person person = Form.form(Person.class).bindFromRequest().get(); 
    EntityManager em = JPA.em(); 
    em.persist(person); 
    em.flush(); 
    return redirect(routes.Application.index()); 
} 

和模型將看起來類似於:

@Entity 
public class Person 
{ 

    private long id; 
    private String name; 

    @Id 
    @Column(name = "id") 
    public long getId() 
    { 
     return id; 
    } 

    public void setId(long id) 
    { 
     this.id = id; 
    } 

    @Basic 
    @Column(name = "name") 
    public String getName() 
    { 
     return name; 
    } 

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