在 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 中添加 &lt;jar-file&gt; 标记?

您可以将所有持久性类打包到 jar 中,将其包含到持久性单元包和持久性 xml 中。

JPA2 规范 8.2.1.6.3 中的更多详细信息

【讨论】:

如果可以,我还可以将类名添加到 persistence.xml 文件中。任何包都可以有其持久性类,它们不能合并为一个。【参考方案2】:

你试过了吗?

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

【讨论】:

是的,但没有机会。尽管有关在 Java SE 环境中使用 JPA 的博客和文章声称,此参数在 SE 环境中不起作用。

以上是关于在 EclipseLink 中以编程方式创建 <class> 定义的主要内容,如果未能解决你的问题,请参考以下文章

多个ListViews在android中以编程方式创建

在 Swift 中以编程方式创建 NSTextField

在 Keycloak 中以编程方式创建客户端

在android中以编程方式创建布局 - 问题

在 Swift 中以编程方式创建 UITableViewController

如何在 iphone 中以编程方式创建 PLIST 文件