Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 与maven在项目之间共享代码_Spring_Jpa_Maven 3 - Fatal编程技术网

Spring 与maven在项目之间共享代码

Spring 与maven在项目之间共享代码,spring,jpa,maven-3,Spring,Jpa,Maven 3,我必须创建2个项目。为此,我将使用Spring、JPA、JSF和Maven。我的项目将是3层架构上的结构,因此我将有视图、服务和DAO层。持久层将由hibernate和JPA2.0提供。 问题是这两个项目将共享大部分代码,基本上这两个项目都在同一个数据库上运行,并且将共享大多数实体、DAO甚至服务。 我在谷歌上搜索了一下,发现这个任务可以通过一个多模块的maven项目来实现。因此,我创建了一个多模块maven项目,它由以下部分组成: -核心包(将包含所有公共类), -内部webApp(将由内部用

我必须创建2个项目。为此,我将使用Spring、JPA、JSF和Maven。我的项目将是3层架构上的结构,因此我将有视图、服务和DAO层。持久层将由hibernate和JPA2.0提供。
问题是这两个项目将共享大部分代码,基本上这两个项目都在同一个数据库上运行,并且将共享大多数实体、DAO甚至服务。
我在谷歌上搜索了一下,发现这个任务可以通过一个多模块的maven项目来实现。因此,我创建了一个多模块maven项目,它由以下部分组成:
-核心包(将包含所有公共类),
-内部webApp(将由内部用户访问)
-外部网站(将由外部客户访问)

我在这里遇到的问题是persistene.xml位置,因为如果我将该文件放入核心包中,我就无法包含其他项目中的实体。如果我将文件放在项目中,我可以引用persistence.xml中的核心实体,但我希望共享一些功能,例如:

public abstract class GenericDaoImpl<T> implements GenericDao<T> {

    @PersistenceContext(type = PersistenceContextType.TRANSACTION,unitName="CCPU")
    protected EntityManager em;
公共抽象类GenericDaoImpl实现GenericDao{
@PersistenceContext(type=PersistenceContextType.TRANSACTION,unitName=“CCPU”)
受保护的实体管理器em;
不再工作,因为eclipse“尖叫”说没有名为CCPU的持久化单元,因为persistence.xml文件不再在此项目中。
首先,这是解决此类问题的正确方法吗?

最后但并非最不重要的一点是,为了能够合并所有3个子项目中的实体,我应该将持久性文件放在哪里?

我有相同的情况:两个Web应用程序具有公共域对象,但我的所有实体都位于“域”模块中。Web应用程序就像“域”后端模块的“前端客户端”

如果您想在适当的项目中找到特定于webapp的实体,请尝试从GenericDaoImpl中删除“em”字段,并将其作为参数传递给所有方法