Вопрос

Я пытаюсь разработать приложение плагина Java, используя Java плагин Framework. Анкет Все плагины будут иметь Acces в базе данных UNIQ с использованием JPA (с Eclipselink).

Но каждый плагин будет иметь собственные сущности.

Поэтому я не мог объявить все объекты в одном уникальном файле Persinence.xml в плагине Core.

Вопрос в том, можно ли объявить класс сущности на лету при объявлении EntityManagerFactory? Я уже использую карту, чтобы получить строку подключения и пользователь/пароль из файла конфигурации пользователя.

Есть ли способ сделать то же самое с объектами?

Map<String, String> p = new HashMap<String, String>();
p.put("javax.persistence.jdbc.url", dns);
p.put("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
p.put("javax.persistence.jdbc.user", config.getProperty("com.cjrf.xbmo.db.username", ""));
p.put("javax.persistence.jdbc.password", config.getProperty("com.cjrf.xbmo.db.password", ""));
entityManagerFactory = Persistence.createEntityManagerFactory("mediamanager", p);

Спасибо за вашу помощь.

Это было полезно?

Решение

Если ваша единственная проблема не объявляет файлы класса в Persistence.xml, то вы можете использовать функциональную функцию обнаружения.

Для EclipsElink добавьте это в Persistence.xml

<exclude-unlisted-classes>false</exclude-unlisted-classes>

Теперь все аннотации нанесены на карту с @Entity будет отсканирован автоматически.

Другие советы

Это может помочь:

http://www.dynamicjava.org/projects/dynamic-jpa

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top