如何动态声明实体?
我尝试使用 Java 插件框架 开发 Java 插件应用程序。所有插件都可以使用 JPA(使用 Eclipselink)访问 uniq 数据库。
但每个插件都有自己的实体。
因此,我无法在核心插件的一个唯一文件 persistence.xml 中声明所有实体。
问题是:在声明 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);
感谢您的帮助。
I try to develop a Java Plugin application using the Java plugin framework. All plugins will have acces to a uniq database using JPA (with Eclipselink).
But each plugin will have there own Entities.
So I could not declare all Entities in one unique file persitence.xml in the core plugin.
The question is: is it possible to declare Entity class on the fly when declaring the EntityManagerFactory? I am already using a Map to get connection string and user/password from user configuration file.
Is there a way to do the same with Entities ?
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);
Thanks for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这可能会有所帮助:
http://www.dynamicjava.org/projects/dynamic-jpa
This might help:
http://www.dynamicjava.org/projects/dynamic-jpa
如果您唯一关心的是不在 persistence.xml 中声明类文件,那么您可以使用自动检测功能。
对于 eclipselink,将其添加到 persistence.xml
现在,将自动扫描所有使用
@Entity
映射的注释。If your only concern is not do declare the class files in the persistence.xml then you can use auto detect funcionality.
For eclipselink add this to persistence.xml
Now all annotation mapped with
@Entity
will be scanned automatically.