2015-10-13 109 views
0

我想製作一個簡單的測試實體,爲此我希望EclipseLink從實體類創建表。我得到的錯誤,而且不知道如何解決它:未找到數據庫EclipseLink

[EL Info]: server: 2015-10-13 18:26:54.901--ServerSession(1989972246)--Detected server platform: org.eclipse.persistence.platform.server.NoServerPlatform. 
[EL Info]: server: 2015-10-13 18:26:54.933--ServerSession(1989972246)--Detected server platform: org.eclipse.persistence.platform.server.NoServerPlatform. 
[EL Info]: 2015-10-13 18:26:55.23--ServerSession(1989972246)--EclipseLink, version: Eclipse Persistence Services - 2.6.0.v20150309-bf26070 
[EL Severe]: ejb: 2015-10-13 18:26:55.232--ServerSession(1989972246)-- Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.DatabaseException 
Exception Description: Configuration error. Class [org.apache.derby.jdbc.EmbeddedDriver;create=true;] not found. 
Exception in thread "main" javax.persistence.PersistenceException: Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.DatabaseException 
Exception Description: Configuration error. Class [org.apache.derby.jdbc.EmbeddedDriver;create=true;] not found. 
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:812) 
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:205) 
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:305) 
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337) 
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:303) 
at com.Test.main(Test.java:29) 
Caused by: Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.DatabaseException 
Exception Description: Configuration error. Class [org.apache.derby.jdbc.EmbeddedDriver;create=true;] not found. 
at org.eclipse.persistence.exceptions.DatabaseException.configurationErrorClassNotFound(DatabaseException.java:89) 
at org.eclipse.persistence.sessions.DefaultConnector.loadDriverClass(DefaultConnector.java:267) 
at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:85) 
at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162) 
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.setOrDetectDatasource(DatabaseSessionImpl.java:204) 
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:746) 
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:253) 
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:728) 
... 5 more 

的代碼如下:

Test.java

package com; 

import javax.persistence.Basic; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.EntityTransaction; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Persistence; 
import javax.persistence.Table; 

import com.to.Project; 

@Entity 
@Table(name = "test") 
public class Test { 

@Id 
    public int id; 

    @Basic 
    public String data; 

public static void main(String[] args) { 
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("test"); 
    EntityManager em = emf.createEntityManager();        
    EntityTransaction tx = em.getTransaction();         

    Test test = em.find(Test.class, 1);           
    if (test == null) {               
     test = new Test();               

     test.data = "a";               

     tx.begin();                
     em.persist(test);               
     tx.commit();                
    }  
    System.out.format("Test{id=%s, data=%s}\n", test.id, test.data);    

    em.close();                 
    emf.close(); 

} 
} 

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>cat</groupId> 
<artifactId>projectmanager</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<dependencies> 
<dependency> 
    <groupId>org.apache.derby</groupId> 
    <artifactId>derby</artifactId> 
    <version>10.12.1.1</version> 
</dependency> 
<dependency> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok</artifactId> 
    <version>1.16.6</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.persistence</groupId> 
    <artifactId>eclipselink</artifactId> 
    <version>2.6.0</version> 
</dependency> 

的persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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/persistencehttp://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"version="2.0"> 
<persistence-unit name="test"> 
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
<properties> 
    <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver;create=true"/> 
    <property name="javax.persistence.jdbc.url" value="jdbc:derby:MyDB"/> 
    <property name="javax.persistence.jdbc.user" value="root"/> 
    <property name="javax.persistence.jdbc.password" value="root"/> 
    <property name="eclipselink.ddl-generation" value="create-or-extend-tables"/> 
    <property name="eclipselink.create-ddl-jdbc-file-name" value="createDDL_ddlGeneration.jdbc"/> 
    <property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc"/> 
    <property name="eclipselink.ddl-generation.output-mode" value="both"/> 
</properties> 

任何種類的幫助表示歡迎:)

+0

'內部異常:java.sql.SQLException:未找到數據庫'MyDB'。' - 您的數據庫名爲'MyDB'? –

回答