簡體   English   中英

Playframework 2.3.x JAVA + JPA + MySQL

[英]Playframework 2.3.x JAVA + JPA + MySQL

我正在使用playframework 2.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數據庫的示例中很差,我讀了tuto,發表了文章,但是我沒有找到解決方案。 我想我忘記了persistence.xml文件中的某些內容,但我不知道是什么。

build.sbt

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>

在示例中,我找到了不同的配置:

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

要么

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />  
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />

我不知道哪一個最合適

我發現了我的問題。 也許另一個人可能遇到類似的問題,所以我會解釋。

我的項目分為3個子項目:例如core,common,subproject1

  1. 核心=通用類和api代碼
  2. common = common模塊(popins,footer,header ...),可能包含視圖和控制器
  3. subproject1 =站點或管理模塊

common取決於核心,subproject1取決於common。 我的主項目(根)取決於common和subproject1並將它們匯總

build.sbt

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)

當嘗試在核心子項目(包core.app.models.datas)中創建我的User類時出現問題,顯然是因為核心沒有直接聚集在我的根項目中,所以沒有導入javax.persistence包。 如果我在common或subproject1中創建一個User類,我沒有問題。

為了解決這個問題,我創建了一個具有良好依賴關系的build.sbt文件:

... /核心/build.sbt

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"
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM