Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] How can I generate tables from entities?

The signing issue was from an issue with making the persistence.jar signed,
because EclipseLink ships JPA 2.0 classes in its own jar.  You need to
either use the unsigned version of the persistence.jar (one that used to be
included in EclipseLink, or one from any other source), or replace your JPA
1.0 persistence.jar with the JPA 2.0 persistence.jar.



Gerhard Kratz wrote:
> 
> 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="
> 
> 


-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland 
http://www.eclipse.org/eclipselink/
 EclipseLink ,  http://www.oracle.com/technology/products/ias/toplink/
TopLink 
Wiki:  http://wiki.eclipse.org/EclipseLink EclipseLink , 
http://wiki.oracle.com/page/TopLink TopLink 
Forums:  http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink , 
http://www.nabble.com/EclipseLink-f26430.html EclipseLink 
Book:  http://en.wikibooks.org/wiki/Java_Persistence Java Persistence 
-- 
View this message in context: http://www.nabble.com/How-can-I-generate-tables-from-entities--tp23922742p23968693.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top