Playframework 2.3.xJava+;JPA&x2B;MySQL

Playframework 2.3.xJava+;JPA&x2B;MySQL,java,mysql,jpa,playframework,Java,Mysql,Jpa,Playframework,我正在使用PlayFramework2.3.x和Java。对于我的项目,我想连接mysql并使用JPA,连接工作正常(我认为),但当我尝试创建一个模型用户时,我出现了以下错误: [error] C:\Users\lpiroche\Documents\www\play_framework\play_sample1\modules\core \app\models\User.java:3: error: package javax.persistence does not exist [error]

我正在使用PlayFramework2.3.x和Java。对于我的项目,我想连接mysql并使用JPA,连接工作正常(我认为),但当我尝试创建一个模型用户时,我出现了以下错误:

[error] C:\Users\lpiroche\Documents\www\play_framework\play_sample1\modules\core
\app\models\User.java:3: error: package javax.persistence does not exist
[error] import javax.persistence.Column;
[error]                         ^
[error] C:\Users\lpiroche\Documents\www\play_framework\play_sample1\modules\core
\app\models\User.java:4: error: package javax.persistence does not exist
[error] import javax.persistence.Entity;
[error]                         ^
[error] C:\Users\lpiroche\Documents\www\play_framework\play_sample1\modules\core
\app\models\User.java:5: error: package javax.persistence does not exist
[error] import javax.persistence.GeneratedValue;
[error]                         ^
[error] C:\Users\lpiroche\Documents\www\play_framework\play_sample1\modules\core
\app\models\User.java:6: error: package javax.persistence does not exist
[error] import javax.persistence.GenerationType;
[error]                         ^
[error] C:\Users\lpiroche\Documents\www\play_framework\play_sample1\modules\core
\app\models\User.java:7: error: package javax.persistence does not exist
[error] import javax.persistence.*;
[error] ^
[error] C:\Users\lpiroche\Documents\www\play_framework\play_sample1\modules\core
\app\models\User.java:9: error: cannot find symbol
[error] @Entity
[error]  ^
[error]   symbol: class Entity
[error] C:\Users\lpiroche\Documents\www\play_framework\play_sample1\modules\core
\app\models\User.java:10: error: cannot find symbol
[error] @Table(name="users")
在连接mysql数据库的示例中,播放文档很差,我读了图图,但没有找到解决方案。我想我忘记了persistence.xml文件中的某些内容,但我不知道是什么

构建.sbt

libraryDependencies ++= Seq(  
  javaJdbc,  
  cache,
  javaWs,
  javaJpa,
  "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",  
  "mysql" % "mysql-connector-java" % "5.1.18"
)
name := "sample"

version := "1.0"


libraryDependencies ++= Seq(  
  javaJdbc,  
  cache,
  javaWs,
  javaJpa,
  "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",  
  "mysql" % "mysql-connector-java" % "5.1.18"
)

lazy val root = (project in file(".")).enablePlugins(PlayJava) 
                    .aggregate(common, subproject1 )  
                    .dependsOn(common, subproject1 )                 

lazy val core = (project in file("modules/core")).enablePlugins(PlayJava)

lazy val common = (project in file("modules/common")).enablePlugins(PlayJava).dependsOn(core)
lazy val subproject1 = (project in file("modules/subproject1 ")).enablePlugins(PlayJava).dependsOn(common)
name := "core"
version := "1.0"

libraryDependencies ++= Seq(  
  javaJdbc,  
  cache,
  javaWs,
  javaJpa,
  "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",  
  "mysql" % "mysql-connector-java" % "5.1.18"
)
application.conf

db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/mydb"
db.default.user=root
db.default.password=""    
db.default.jndiName=DefaultDS
jpa.default=defaultPersistenceUnit
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.MySQLDialect" />  
        <property name="hibernate.hbm2ddl.auto" value="update"/>
        <property name="hibernate.show_sql" value="true"></property>
        <property name="hibernate.format_sql" value="true"></property>
    </properties>  
  </persistence-unit>  
</persistence>

org.hibernate.ejb.HibernatePersistence
默认值
在示例中,我发现了不同的配置:

<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"></property>
<property name="hibernate.format_sql" value="true"></property>



我不知道哪一个是最合适的

我发现了我的问题。也许另一个人也会遇到类似的问题,所以我会解释

我的项目分为3个子项目:核心、公共和子项目1

  • core=通用类和api代码
  • 公共=公共模块(popin、页脚、页眉…),它可以包含视图和控制器
  • 子项目1=站点或管理模块
  • 公共依赖于核心,子项目1依赖于公共。我的主项目(root)依赖于common和subproject1并放弃它们

    构建.sbt

    libraryDependencies ++= Seq(  
      javaJdbc,  
      cache,
      javaWs,
      javaJpa,
      "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",  
      "mysql" % "mysql-connector-java" % "5.1.18"
    )
    
    name := "sample"
    
    version := "1.0"
    
    
    libraryDependencies ++= Seq(  
      javaJdbc,  
      cache,
      javaWs,
      javaJpa,
      "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",  
      "mysql" % "mysql-connector-java" % "5.1.18"
    )
    
    lazy val root = (project in file(".")).enablePlugins(PlayJava) 
                        .aggregate(common, subproject1 )  
                        .dependsOn(common, subproject1 )                 
    
    lazy val core = (project in file("modules/core")).enablePlugins(PlayJava)
    
    lazy val common = (project in file("modules/common")).enablePlugins(PlayJava).dependsOn(core)
    lazy val subproject1 = (project in file("modules/subproject1 ")).enablePlugins(PlayJava).dependsOn(common)
    
    name := "core"
    version := "1.0"
    
    libraryDependencies ++= Seq(  
      javaJdbc,  
      cache,
      javaWs,
      javaJpa,
      "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",  
      "mysql" % "mysql-connector-java" % "5.1.18"
    )
    
    当一个用户试图在core子项目(package core.app.models.datas)中创建我的用户类时,问题就出现了。显然,由于core没有直接聚合到我的根项目中,所以javax.persistence包没有导入。 如果我在common或subproject1中创建用户类,我没有问题

    要解决此问题,我创建了一个具有良好依赖关系的build.sbt文件:

    ../core/build.sbt

    libraryDependencies ++= Seq(  
      javaJdbc,  
      cache,
      javaWs,
      javaJpa,
      "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",  
      "mysql" % "mysql-connector-java" % "5.1.18"
    )
    
    name := "sample"
    
    version := "1.0"
    
    
    libraryDependencies ++= Seq(  
      javaJdbc,  
      cache,
      javaWs,
      javaJpa,
      "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",  
      "mysql" % "mysql-connector-java" % "5.1.18"
    )
    
    lazy val root = (project in file(".")).enablePlugins(PlayJava) 
                        .aggregate(common, subproject1 )  
                        .dependsOn(common, subproject1 )                 
    
    lazy val core = (project in file("modules/core")).enablePlugins(PlayJava)
    
    lazy val common = (project in file("modules/common")).enablePlugins(PlayJava).dependsOn(core)
    lazy val subproject1 = (project in file("modules/subproject1 ")).enablePlugins(PlayJava).dependsOn(common)
    
    name := "core"
    version := "1.0"
    
    libraryDependencies ++= Seq(  
      javaJdbc,  
      cache,
      javaWs,
      javaJpa,
      "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",  
      "mysql" % "mysql-connector-java" % "5.1.18"
    )
    

    这很奇怪,Hibernate应该将其作为依赖项。。。尝试运行
    /activator update
    ,然后重试。如果得到相同的结果,请尝试将
    “org.hibernate.javax.persistence”%”hibernate-jpa-2.0-api“%”1.0.1.Final“
    添加到build.sbt中的libraryDependencies中,然后运行
    /activator update