一个persistence.xml中可以有多个persistence-unit标签

33

我现在正在使用一个JPA 2.0项目(在Eclipse Indigo中)。在我的persistence.xml文件中,我需要指定两个<persistence-unit>标签,因为我有两个不同的数据库要处理。这样做,我会得到以下警告:

定义了多个持久性单元 - 只有第一个持久性单元将被识别

更重要的是,如果我创建我的实体并将其放入第二个<persistence-unit>,我会收到一个错误,说我的实体没有在持久化单元中声明:

类"my.package.MyClass"已映射,但未包含在任何持久单元中

因此,问题是:是否可以在persistence.xml文件中声明(并按预期使用)多个<persistence-unit>标签?如果可以,我需要做什么才能获得准确的行为?

谢谢!


它们是运行时错误还是Eclipse警告? - axtavt
@axtavt:在 persistence.xml 文件中有警告,但我创建的实体类放在第二个 <persistence-unit> 中并使用 <class> 标签,出现错误。错误出现在类中而不是 xml 文件中。 - artaxerxe
2个回答

44

JPA不限制在persistence.xml中定义的持久化单元数量。这个警告仅是指Eclipse IDE工具的限制。例如,可以在此处获得说明:http://www.eclipse.org/webtools/dali/gettingstarted.php

目前Dali只支持一个持久化单元和一个Persistence XML文件每个项目。其他配置可以存在于JPA项目中, 但是当使用多个持久化单元时,验证和默认处理可能不正确。

我想在Eclipse IDE中没有已知的方法使其生效。


34

虽然这是JPA有效的,但您也可以在每个项目中关闭由此产生的(烦人的)错误通知,方法是进入

Project Properties => JPA => Errors/Warnings

激活启用项目特定设置并在Type下,将Class is mapped but is not in a persistence unit的通知级别从Error更改为您喜欢的任何其他级别。

Eclipse Luna更新:

该设置的位置和名称在Luna中已更改。新位置为:

Project Properties => JPA => Errors/Warnings

勾选 启用项目特定设置

展开 项目

已定义多个持久化单元: 改为 忽略

输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接