eclipselink无法自动检测实体类的原因是什么?

时间:2009-10-13 11:03:27

标签: osgi eclipselink

我在OSGi容器中运行eclipselink,我的实体类在他们自己的包中。

我一再遇到Eclipselink无法自动检测实体类的问题,导致“Xyz不是已知的实体类型”消息。调试很痛苦,我有点无助的方法是或多或少地随机调整配置文件,直到它工作。

我希望我知道更系统的方法,但我似乎不太了解问题的可能原因。他们会是什么?是否概述了自动检测中发生了什么以及它需要什么?

因此,如果您自己遇到问题并能够确定一个具体原因,请在此处发布,或在您看到它时将其投票。这样我们就可以生成按频率排序的典型问题列表。我将添加我实际解决的那些。

事实我知道:

  • eclipselink使用OSGi扩展程序模式侦听捆绑包注册然后设置它们
  • 它应该使用类加载器来定义持久性单元的bundle,如果你使用persistence.xml进行配置,那么这是该文件所在的bundle。

3 个答案:

答案 0 :(得分:1)

eclipselink jpa无法持久化扩展实体类的类的对象。那些扩展类本身应该是实体类。

答案 1 :(得分:0)

具有实体类的bundle在其清单中没有正确的JPA-PersistenceUnits标头。此标头是eclipselink发现有待处理的持久性单元的方式。

如果明确列出你的类使它工作,那么错误/缺少标题不是你的问题。

答案 2 :(得分:0)

实体类未在持久性单元的配置中明确列出,persistence.xml(或您使用的任何配置机制)未将exclude-unlisted-classes参数设置为false(根据您是运行Java SE还是EE,默认情况下可能是真的。

如果明确列出您的课程有帮助,这可能是您的问题。