【问题标题】:Play Framework db.play.JPA播放框架 db.play.JPA
【发布时间】:2015-08-28 07:19:27
【问题描述】:

好的。我对 Play Framework 有很大的困惑。 (他们是否像他们的产品一样经常更新他们的教程和文档?)。我正在尝试为 CRUD 应用程序编写教程,并且我使用的是 JPA 而不是 Ebean(因为最后一个不起作用,但正如出现的那样,第一个也是)。 编译器说,它找不到类模型。

Internet 提供了获取正确依赖项的方法,我已经尝试了很多。但我找不到合适的。谁能帮助我如何使这个最简单的事情发挥作用?

这是我的路线:

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

以下是已注释的应用配置

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;


}

【问题讨论】:

  • 为什么要从play.db.ebean.Model 扩展Person?即使您不使用Ebean而是使用JPA,是否也需要?你试过用import play.db.ebean.Model;吗?
  • 是的,我试过了(加上为 ebean 和其他东西添加依赖项,编译器会说 play.db.ebean 不存在
  • 实际上,我更喜欢使用 JPA,但首先尝试了 Ebean,因为它在 playframework 教程中
  • 你目前的目标是什么?让它与 Ebean 一起运行 让它与 JPA 一起运行?如果是后者,那么您是否尝试过 notplay.db.ebean.Model 扩展?
  • 使用 JPA。那我应该怎么延长呢?

标签: java jpa playframework playframework-2.0


【解决方案1】:

通过使用没有 Ebean 的 JPA,它应该像 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;
    }
}

【讨论】:

    猜你喜欢
    • 2012-11-30
    • 2013-02-20
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多