Java 多模块hibernate中的构造函数表达式

Java 多模块hibernate中的构造函数表达式,java,xml,hibernate,jpa,entity,Java,Xml,Hibernate,Jpa,Entity,我目前正在使用hibernate和JPA开发一个JavaEE项目,面临一个我真的不知道如何处理的问题。这是本项目的布局图: 有一个模块,我们称之为模块a,它有一个persistence.xml和许多映射到数据库的实体。我将要添加新功能,由于新功能有自己的职责,我有一个新模块,module B,它有自己的persistence.xml。模块A和模块B都作为EAR部署在JBoss中 数据库的设计(是最终的,不能更改)要求模块B中的一个实体在模块a中有一个外键。在B的persistence.xml中,

我目前正在使用hibernate和JPA开发一个JavaEE项目,面临一个我真的不知道如何处理的问题。这是本项目的布局图:

有一个模块,我们称之为
模块a
,它有一个persistence.xml和许多映射到数据库的实体。我将要添加新功能,由于新功能有自己的职责,我有一个新模块,
module B
,它有自己的persistence.xml。
模块A
模块B
都作为EAR部署在JBoss中


数据库的设计(是最终的,不能更改)要求
模块B
中的一个实体在
模块a
中有一个外键。在B的persistence.xml中,我向外键添加了
-标记,以便hibernate可以找到它。外键实体类本身具有对其他实体的引用,因此我还必须将它们添加到persistence.xml中。我的问题是其中一个实体有一个构造函数表达式jpql查询,将数据从一个实体选择到一个普通的POJO中。在
模块B
中,当hibernate尝试解析所有
-标记时,它会抱怨JPQL查询无效(因为它不知道POJO)。有没有办法让模块B中的持久化单元知道这个对象?我真的想让
模块A中的所有类保持不变,因为它们是某种“遗留代码”,我知道它们已经起作用了(更改它们可能会破坏模块A的结构)。

我终于找到了问题,这是我的修复方法

当我使用
-标记专门将
模块A
中的类添加到
模块B
时,我意外地添加了一个超类,其中包含hibernate认为是错误的查询。事实上,如果只查看那个超类,查询是错误的,因为其中一个变量只可用
在子类中(查询如下所示:
从MyTable x中选择新的MyPojoClass(x.id、x.var1、x.var2、x.variableAvailableInSubClass)
)。为了解决这个问题,我用
添加了所有子类,使hibernate能够解决所有依赖项和查询。

我终于找到了问题,这是我的修复方法

当我使用
-标记专门将
模块A
中的类添加到
模块B
时,我意外地添加了一个超类,其中包含hibernate认为是错误的查询。事实上,如果只查看那个超类,查询是错误的,因为其中一个变量只可用
在子类中(查询如下所示:
从MyTable x中选择新的MyPojoClass(x.id、x.var1、x.var2、x.variableAvailableInSubClass)
)。为了解决这个问题,我添加了所有带有
的子类,使hibernate能够解决所有依赖项和查询。

也许在
模块B
持久性上声明所有
模块A
类。xml
会起作用吗?@Bonifacio是的,我希望如此。然而,我认为,即使在B的persistence.xml hibernate中指定模块A的所有类,仍然只会查看实体。我想通过
依赖项添加类,但是jar在ear中,名称被指定为“module-a-version-minorVersion.jar”。也许在
模块B
持久性.xml
上声明所有
模块a
类就可以了?@Bonifacio是的,我希望如此。然而,我认为,即使在B的persistence.xml hibernate中指定模块A的所有类,仍然只会查看实体。我曾考虑通过
依赖项添加类,但jar在ear中,名称被指定为“module-a-version-minorVersion.jar”。