Java 更改和重新加载时出现eclipselink错误的Play框架

Java 更改和重新加载时出现eclipselink错误的Play框架,java,jpa,playframework-2.0,eclipselink,Java,Jpa,Playframework 2.0,Eclipselink,在将eclipselink集成到play框架中时,我面临一些问题。当我输入run时,服务器启动,我可以连接到我的应用程序而不会出现任何错误 但是:之后,当我(作为一个例子)强制重新编译一个小的更改时,应用程序会因错误而中断(在em.persist上): 我所做的(保持简单)汽车模型: package model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.pers

在将eclipselink集成到play框架中时,我面临一些问题。当我输入run时,服务器启动,我可以连接到我的应用程序而不会出现任何错误

但是:之后,当我(作为一个例子)强制重新编译一个小的更改时,应用程序会因错误而中断(在em.persist上):

我所做的(保持简单)汽车模型:

package model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "car")
public class Car {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int carId;

    private String name;

    public String getName() {
        return this.name;
    }

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

}
我的build.sbt如下所示:

name := "WebTest"

version := "1.0-SNAPSHOT"

libraryDependencies ++= Seq(
 "org.eclipse.persistence" % "eclipselink" % "2.5.1",
 "mysql" % "mysql-connector-java" % "5.1.18",
  javaJdbc,
  javaEbean,
  cache
)     


play.Project.playJavaSettings
application.conf(部分):

Ans conf.META-INFO中的my persistence.xml(drop create之前就在那里):


提前谢谢

我自己解决了这个问题:

关键是使用@Transactional进行注释。但是在build.sbt必须这样修改之前

 "org.eclipse.persistence" % "eclipselink" % "2.5.1",
 "mysql" % "mysql-connector-java" % "5.1.18",
  javaJdbc,
  javaJpa
在游戏机中,您必须“重新加载”。只有在“eclipse”并再次导入项目(至少我的eclipse不喜欢它)时,才能导入

import play.db.jpa.Transactional;
不止

JPA.em()
你可以找entitymanager

public class Application extends Controller {

    private static final String PERSISTENCE_UNIT_NAME = "defaultPersistenceUnit";
    private static EntityManagerFactory factory;

    public static Result index() {
        factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
        EntityManager em = factory.createEntityManager();
        em.getTransaction().begin();

        Car car = new Car();
        car.setName("Supercar");

        em.persist(car);
        em.getTransaction().commit();
        em.close();

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

}
 "org.eclipse.persistence" % "eclipselink" % "2.5.1",
 "mysql" % "mysql-connector-java" % "5.1.18",
  javaJdbc,
  javaJpa
import play.db.jpa.Transactional;
JPA.em()