Hi,
I’m using EclipseLink
2.5.1 in a JavaSE Application.
I have the requirement
to add entityclasses from jars to my persistence unit
dynamically at runtime. I want to be able
to simply put new jars
into a folder in the class path and load the entity classes
by name.
This is the Main
public class App {
private static
EntityManagerFactory emf;
public static void
main(String[] args) {
loginToDB();
Person person =
new Person();
person.setName("Spiderman");
Customer
customer = new Customer();
customer.setName("Superman");
EntityManager em
= emf.createEntityManager();
em.getTransaction().begin();
em.persist(person);
em.persist(customer);
em.getTransaction().commit();
em.close();
}
public static void
loginToDB() {
Map propertyMap
= new HashMap();
propertyMap.put("javax.persistence.jdbc.user", "TestUser");
propertyMap.put("javax.persistence.jdbc.password", "pw");
emf =
Persistence.createEntityManagerFactory("db",
propertyMap);
}
}
And here the
persistence.xml
<?xml version="1.0"
encoding="UTF-8"?>
<persistence
version="2.0" 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/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit
name="db" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property
name="eclipselink.canonicalmodel.subpackage"
value="one"/>
<property
name="eclipselink.jdbc.batch-writing" value="JDBC"/>
<property
name="eclipselink.jdbc.batch-writing.size" value="1000"/>
<property
name="javax.persistence.jdbc.url"
value="jdbc:derby://localhost:1527/Database"/>
<property
name="javax.persistence.jdbc.password" value="pw"/>
<property
name="javax.persistence.jdbc.driver"
value="org.apache.derby.jdbc.ClientDriver"/>
<property
name="javax.persistence.jdbc.user" value="TestUser"/>
<property
name="javax.persistence.schema-generation.database.action"
value="drop-and-create"/>
</properties>
</persistence-unit>
</persistence>
The Class Person is in the MainProject and
detected by
“<exclude-unlisted-classes>false</exclude-unlisted-classes>”
while the Customer class is in an other Project as
Dependency and NOT detected. Is there any solution to add
the customer class programmatically to the persistence unit?