[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
[eclipselink-users] How can I generate tables from entities?
 | 
Hello,
since a few days I keep trying to generate SQL tables with EclipseLink 
and Dali (JavaSE). I made the following experiment:
- using SQLExplorer I created an SQL table "employee" in database "test"
- set up a JPA project "Employee_1"
- successfully generated the entity "employee" from the above table with 
the JPA tools
- again with SQLExplorer, dropped the table employee from the database
- unsuccessfully tried to re-generate this table from the entity
1. Software configuration:
 eclipse-jee-ganymede-SR2-win32
 eclipselink-2.0.0.v20090604-r4409
 wtp-S-3.1RC3-20090602055316
 MySQL 5.1
 mysql-connector-java-5.1.7
2. The configuration of the JPA project:
 projekt name: Employee_1
 target runtime: <None>
 configuration: Employee_1_Facets, containing:
   - Java 6.0
   - Java Persistence 1.0
   - Utility Module
   - Platform: EclpiseLink
   - Connection: MySQL-2, via MySQL JDBC Driver with the following 
properties:
     - Database: test
     - URL: jdbc:mysql://localhost:3306/
     - User name: <user name>
     - Password: <password>
     [x] Save password
     When testing this connection the ping was successful.
   - implementation library: ECLIPSELINK_USER_LIB, containing:
     - eclipselink.jar
     - javax.persistence_1.0.0v200905011740.jar
     - javax.persistence_2.0_preview.jar
   - Persistent class management: Discover annotated classes automatically
   [x] Create orm.xml
 3. persistence.xml:
 <?xml version="1.0" encoding="UTF-8"?>
 <persistence version="1.0" 
xmlns="http://java.sun.com/xml/ns/persistence""http://www.w3.org/2001/XMLSchema-instance"http://java.sun.com/xml/ns/persistencehttp://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> 
   <persistence-unit name="Employee_1" transaction-type="RESOURCE_LOCAL">
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
     <properties>
       <property name="eclipselink.jdbc.url" 
value="jdbc:mysql://localhost:3306/"/>
       <property name="eclipselink.jdbc.user" value= <user name> />
       <property name="eclipselink.jdbc.password" value= <password> />
       <property name="eclipselink.jdbc.driver" 
value="com.mysql.jdbc.Driver"/>
       <property name="eclipselink.ddl-generation" value="create-tables"/>
       <property name="eclipselink.ddl-generation.output-mode" 
value="both"/>
       <property name="eclipselink.application-location" value= 
<location> />
     </properties>
   </persistence-unit>
 </persistence>
4. Project directory tree after generating entity class "employee" from 
the respective table:
 Employee_1
 |   .classpath
 |   .project
 |    +---.settings
 |       org.eclipse.jdt.core.prefs
 |       org.eclipse.jpt.core.prefs
 |       org.eclipse.jst.common.project.facet.core.prefs
 |       org.eclipse.wst.common.component
 |       org.eclipse.wst.common.project.facet.core.xml
 |        +---build
 |   +---classes
 |       +---employee1
 |       |       Employee.class
 |       |        |       +---META-INF
 |               MANIFEST.MF
 |               orm.xml
 |               persistence.xml
 +---src
     +---employee1
     |       Employee.java
     |            +---META-INF
             MANIFEST.MF
             orm.xml
             persistence.xml
         5. Trying to generate table "employee" gives the following 
error message:
 Exception in thread "main" javax.persistence.PersistenceException: No 
Persistence provider for EntityManager named Employee_1
   at 
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89) 
   at org.eclipse.jpt.eclipselink.core.ddlgen.Main.execute(Main.java:77)
   at org.eclipse.jpt.eclipselink.core.ddlgen.Main.main(Main.java:65)
 although I named a persistence provider in my persistence.xml which is 
contained in eclipselink.jar which itself is included in my user library 
ECLIPSELINK_USER_LIB.
6. Next, I imported this project into a newly installed workspace with a 
shorter pathname without any spaces ("C:\JPA").
 Now, in persistence.xml the following line is added:
   <class>employee1.Employee</class>
 When I try again to generate the table, I get this error message:
[EL Finest]: 2009-06-08 
11:23:11.296--ServerSession(22522451)--Thread(Thread[main,5,main])--property=eclipselink.logging.timestamp; 
value=false
[EL Finest]: 
ServerSession(22522451)--Thread(Thread[main,5,main])--property=eclipselink.logging.thread; 
value=false
[EL Finest]: 
ServerSession(22522451)--property=eclipselink.logging.session; value=false
[EL Finest]: property=eclipselink.logging.exceptions; value=true
[EL Finest]: Begin predeploying Persistence Unit Employee_1; state 
Initial; factoryCount 0
[EL Info]: property eclipselink.jdbc.user is deprecated, property 
javax.persistence.jdbc.user should be used instead.
[EL Info]: property eclipselink.jdbc.driver is deprecated, property 
javax.persistence.jdbc.driver should be used instead.
[EL Info]: property eclipselink.jdbc.url is deprecated, property 
javax.persistence.jdbc.url should be used instead.
[EL Info]: property eclipselink.jdbc.password is deprecated, property 
javax.persistence.jdbc.password should be used instead.
[EL Finest]: property=eclipselink.weaving; value=false
[EL Finest]: property=eclipselink.orm.throw.exceptions; value=true
[EL Finer]: Searching for default mapping file in 
file:/C:/JPA/Employee_1/build/classes/
[EL Finer]: Found a default mapping file at 
file:/C:/JPA/Employee_1/build/classes/META-INF/orm.xml for root URL 
file:/C:/JPA/Employee_1/build/classes/
[EL Finer]: Searching for default mapping file in 
file:/C:/JPA/Employee_1/build/classes/
[EL Config]: The access type for the persistent class [class 
employee1.Employee] is set to [FIELD].
[EL Config]: The alias name for the entity class [class 
employee1.Employee] is being defaulted to: Employee.
Exception in thread "main" Local Exception Stack:
Exception [EclipseLink-30005] (Eclipse Persistence Services - 
2.0.0.v20090604-r4409): 
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while searching for 
persistence archives with ClassLoader: 
sun.misc.Launcher$AppClassLoader@11b86e7
Internal Exception: javax.persistence.PersistenceException: Exception 
[EclipseLink-28018] (Eclipse Persistence Services - 
2.0.0.v20090604-r4409): 
org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [Employee_1] 
failed.
Internal Exception: java.lang.SecurityException: class 
"javax.persistence.ElementCollection"'s signer information does not 
match signer information of other classes in the same package
  at 
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:121) 
  at 
org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:133) 
  at 
org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:67) 
  at 
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83) 
  at org.eclipse.jpt.eclipselink.core.ddlgen.Main.execute(Main.java:77)
  at org.eclipse.jpt.eclipselink.core.ddlgen.Main.main(Main.java:65)
Caused by: javax.persistence.PersistenceException: Exception 
[EclipseLink-28018] (Eclipse Persistence Services - 
2.0.0.v20090604-r4409): 
org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [Employee_1] 
failed.
Internal Exception: java.lang.SecurityException: class 
"javax.persistence.ElementCollection"'s signer information does not 
match signer information of other classes in the same package
  at 
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:879) 
  at 
org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.callPredeploy(JPAInitializer.java:110) 
  at 
org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initPersistenceUnits(JPAInitializer.java:159) 
  at 
org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initialize(JPAInitializer.java:144) 
  at 
org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:105) 
  ... 4 more
Caused by: Exception [EclipseLink-28018] (Eclipse Persistence Services - 
2.0.0.v20090604-r4409): 
org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [Employee_1] 
failed.
Internal Exception: java.lang.SecurityException: class 
"javax.persistence.ElementCollection"'s signer information does not 
match signer information of other classes in the same package
  at 
org.eclipse.persistence.exceptions.EntityManagerSetupException.predeployFailed(EntityManagerSetupException.java:210) 
  ... 9 more
Caused by: java.lang.SecurityException: class 
"javax.persistence.ElementCollection"'s signer information does not 
match signer information of other classes in the same package
  at java.lang.ClassLoader.checkCerts(Unknown Source)
  at java.lang.ClassLoader.preDefineClass(Unknown Source)
  at java.lang.ClassLoader.defineClass(Unknown Source)
  at java.security.SecureClassLoader.defineClass(Unknown Source)
  at java.net.URLClassLoader.defineClass(Unknown Source)
  at java.net.URLClassLoader.access$000(Unknown Source)
  at java.net.URLClassLoader$1.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClassInternal(Unknown Source)
  at 
org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.isElementCollection(MetadataAnnotatedElement.java:345) 
  at 
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.buildAccessor(ClassAccessor.java:424) 
  at 
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.addAccessorFields(ClassAccessor.java:344) 
  at 
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.addAccessors(ClassAccessor.java:317) 
  at 
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.preProcess(EntityAccessor.java:600) 
  at 
org.eclipse.persistence.internal.jpa.metadata.MetadataProject.processStage1(MetadataProject.java:1028) 
  at 
org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:451) 
  at 
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:297) 
  at 
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:839) 
  ... 8 more
7. After a few seconds, my entity class file Employee.java exhibits the 
following errors:
 - Schema "null" cannot be resolved for table "Employee"
 - Column "personid" cannot be resolved
 - Column "name" cannot be resolved
 I hope, someone can help me to get the table generator working.
 best regards
 Gerhard
xmlns:xsi= xsi:schemaLocation="