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