在 EclipseLink 中以编程方式创建 <class> 定义
Posted
技术标签:
【中文标题】在 EclipseLink 中以编程方式创建 <class> 定义【英文标题】:Creating <class> definitions programmatically in EclipseLink 【发布时间】:2012-04-03 12:53:20 【问题描述】:我正在尝试在 OSGi 环境中使用 EclipseLink。
我想要做的是,构建一个提供程序包,将 EntityManager 暴露给其他包。
问题是,实体类在编译时无法确定并写入persistence.xml文件。所以我希望能够以编程方式定义实体类。我可以扫描所有实体类,但据我所知,没有办法在 EclipseLink 中定义它,而在 Hibernate 中是可能的。 (Hibernate 在 OSGi 环境中存在一些不同的问题,所以我也不能使用它)
如何以编程方式定义实体类?
注意:我不能选择使用弹簧;并且从头开始定义 ClassDescriptors 是不可接受的。我必须说,JPA 和 EclipseLink 都没有直接支持这样一个基本功能,这真是太愚蠢了。
【问题讨论】:
【参考方案1】:您是否尝试过在 persistence.xml 中添加 <jar-file>
标记?
您可以将所有持久性类打包到 jar 中,将其包含到持久性单元包和持久性 xml 中。
JPA2 规范 8.2.1.6.3 中的更多详细信息
【讨论】:
如果可以,我还可以将类名添加到 persistence.xml 文件中。任何包都可以有其持久性类,它们不能合并为一个。【参考方案2】:你试过了吗?
<exclude-unlisted-classes>false<exclude-unlisted-classes>
【讨论】:
是的,但没有机会。尽管有关在 Java SE 环境中使用 JPA 的博客和文章声称,此参数在 SE 环境中不起作用。以上是关于在 EclipseLink 中以编程方式创建 <class> 定义的主要内容,如果未能解决你的问题,请参考以下文章