Как объявить сущности на лету? - PullRequest
0 голосов
/ 18 января 2011

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

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

Поэтому я не мог объявить все сущности в одном уникальном файле.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 ]

1 голос
/ 18 января 2011

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

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

0 голосов
/ 18 января 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...