Как объявить сущности на лету?

Я пытаюсь разработать приложение Java Plugin с использованием инфраструктуры Java Plugin. Все плагины будут иметь доступ к базе данных uniq с использованием JPA (с Eclipselink).

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

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

Вопрос: возможно ли объявить класс Entity на лету при объявлении 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);

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

2 ответа

Решение

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

Для eclipselink добавьте это в persistence.xml

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

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

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

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

Другие вопросы по тегам