我有几个我开发的jar文件(tasks.jar,calendar.jar,user.jar,authentication.jar),其中包含每个文件中的persistence.xml文件。所有这些persistence.xml文件都具有相同的持久性单元名称,例如' TASK_MANAGER'。
我的问题是我可以将这些jar文件添加到JSF Web项目的lib文件夹中,并通过托管会话bean使用它们,托管会话bean再次使用JPA实体管理器,持久性单元名称' TASK_MANAGER' 。例如:
//All the imports go here (import com.app.model.task) etc....
@ManagedBean
@RequestScoped
public class TaskController{
//Access the entity manager and work with their methods here
}
我知道http://docs.oracle.com/javaee/6/tutorial/doc/bnbqw.html
如果将持久性单元打包在一个JAR文件中 包含在WAR或EAR文件中的JAR文件应位于
- WAR的WEB-INF / lib目录
- EAR文件的库目录
但我的问题是我可以使用多个persistence.xml文件来执行此操作。
因为在Eclipse中我尝试实现这一点时,只加载了最终的jar文件的持久性文件,我知道这是因为当我尝试运行应用程序时,无法识别其他实体。
如何将多个persistence.xml文件包含到一个项目中。
我已经检查了这些Configure persistence units to be available in several jars of an ear和https://stackoverflow.com/questions/23398636/combining-entities-across-jars-in-a-single-persistence-xml-file。
答案 0 :(得分:0)
解决方案非常简单。 eclipselink想知道子项目是什么' persistence.xml文件是。所以在那些开发JAR的迷你项目中,我不得不将以下属性添加到他们的persistence.xml文件中。
<property name="eclipselink.composite-unit.member" value="true"/>
之后在主persistence.xml文件中,您还必须设置follewing属性。
<property name="eclipselink.composite-unit" value="true"/>
现在一切都很完美..