Skip to main content

[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="


Back to the top