2015-01-28 3 views
0

저는 playframework 2.3.x와 Java를 사용하고 있습니다. 내 프로젝트를 위해 내가 JPA, 연결 작업 벌금을 (내가 생각하는) MySQL과 연결하여 사용하고자하지만 난이 모델 사용자를 생성 할 때이 오류가 :Playframework 2.3.x JAVA + JPA + MySQL

[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, post를 읽으십시오. 그러나 해결책을 찾지 못합니다. 나는 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 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> 

의 persistence.xml 내가 differentes 구성을 찾을 수 :

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

내가 가장 적절한

+0

을, Hibernate는 것을해야 의존성 등 ... ./activator update'를 실행하고 다시 시도하십시오.같은 결과를 얻으면 build.html의 libraryDependencies에''org.hibernate.javax.persistence "%"hibernate-jpa-2.0-api "%"1.0.1.Final "을 추가하고'를 실행하십시오./activator update' – Salem

답변

2

내가 발견 내 문제가 어느 모른다. 다른 사람이 비슷한 문제를 만났을 수도 있으므로 설명해 드리겠습니다.

내 프로젝트는 3 개 하위 프로젝트로 나누어 져 있습니다

: 핵심, 예를 들어 일반, subproject1

  1. 핵심 = 일반적인 클래스와 API 코드
  2. 일반적인 = 공통 모듈 (popins, 바닥 글, 헤더 ...)를 뷰와 컨트롤러
  3. subproject1 = 사이트 또는 공통 핵심와 subproject1에 따라

가 일반에 따라 관리 모듈을 포함 할 수있다. 내 주요 프로젝트 (루트)가 일반적이고 subproject1에 따라 그들을

시도가 핵심 하위 프로젝트에서 내 사용자 클래스를 만들 때 문제가 나타납니다

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) 

build.sbt agregate (패키지 코어 .app.models.datas), 명백히 코어가 내 루트 프로젝트에서 직접 집계되지 않으므로 javax.persistence 패키지는 가져 오지 않습니다. 공통 또는 하위 프로젝트 1 사용자 클래스를 만드는 경우 아무런 문제가 없습니다.

의 I가 좋은 종속성에 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" 
)