Как объявить сущности на лету?
Я пытаюсь разработать приложение 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
будет сканироваться автоматически.
Это может помочь: