2

データベースでアクション検索を作成しようとすると、[RuntimeException: No JPA EntityManagerFactory configured for name [default]] というエラーが発生しました。

モデル --- user.java

@Entity
public class User extends Model{

    @Required
    public String MaKH;

    @Id
    public Integer Id;

    @MinLength(6)
    public String Ten;

    public String Diachi;

    public Integer SDT;

    public User() {}

    public User(String MaKH,String Ten,String Diachi,Integer SDT,Integer Id){
        this.Diachi=Diachi;
        this.MaKH=MaKH;
        this.Ten=Ten;
        this.SDT=SDT;
        this.Id=Id;
    }


    // Find method static for request
    public static Finder<Long,User> find = new Finder(Long.class,User.class);
    public static List<User> searchByName(String name){
        return find.where().like("Ten", "%"+name+"%").findList();
    }
}

コントローラー --- Application.java

public class Application extends Controller {

 public static Result index() {
     return ok(index.render());
 }
 @Transactional
 public static Result search() {
            DynamicForm form = form().bindFromRequest();
            String name = form.get("Ten");
            User.searchByName(name);
      return ok(result.render());

} }

ルート

GET      /                           controllers.Application.index()
POST     /search                 controllers.Application.search()

アプリケーション.conf

 db.default.driver=com.mysql.jdbc.Driver
 db.default.url="jdbc:mysql://localhost/search"
 db.default.user=root
 db.default.password=123456
 db.default.jndiName=DefaultDS
 ebean.default="models.*"

私がそれを解決するのを手伝ってください:D

4

1 に答える 1

3

いくつかのプロジェクトで働きました。application.conf に追加

jpa.default=defaultPersistenceUnit

お気に入り

...
# Database configuration
# ~~~~~
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
#
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost:3305/dbname"
db.default.user=root
db.default.password=""
#db.default.maxConnectionsPerPartition=5
#
# You can expose this datasource via JNDI if needed (Useful for JPA)
db.default.jndiName=DefaultDS
jpa.default=defaultPersistenceUnit

# Evolutions...

また、sbt for play 2.2.3 に追加しました

libraryDependencies ++= Seq(
  javaJdbc,
  javaJpa,
  cache
)

play.Project.playJavaSettings

val appDependencies = Seq(
  javaJdbc,
  javaJpa,
  "org.hibernate" % "hibernate-entitymanager" % "4.3.5.Final",
  "mysql" % "mysql-connector-java" % "5.1.29"
)

ebeanEnabled in Global := false

おそらく、persistence.xml とクラスとテーブルと Java 注釈ですべてが問題なく、すべてをクリーンアップして再起動し、どこにでも @Transactional を追加すると、ほとんどエラーが発生しなくなります。また、JPA.em() の代わりに JPA.em("default") を使用することもあります。

于 2014-06-19T09:56:47.527 に答える