java - hibernate中具有多个模块的构造函数表达式

标签 java xml hibernate jpa entity

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

有一个模块,我们称之为 module A ,其中有一个 persistence.xml 和许多映射到数据库的实体。我即将添加新功能,由于新功能有其自己的职责,我有一个新模块 module B ,有自己的 persistence.xml。两者module Amodule B部署为 JBoss 中的耳朵。

数据库的设计(这是最终的且无法更改)需要 module B 中的实体之一在module A中有一个外键。在B的persistence.xml中我添加了<class> - 外键的标签,以便 hibernate 可以找到它。外键实体类本身具有对其他实体的引用,因此我也必须将它们添加到 persistence.xml 中。我的问题是,其中一个实体有一个构造函数表达式 jpql 查询,将实体中的数据选择到常用的 POJO 中。在 module B当 hibernate 尝试解决所有 <class> 时-tags 它提示 JPQL 查询无效(因为它不知道 POJO)。有没有办法让模块B中的持久化单元知道这个对象?我真的很想将所有类(class)留在 module A未受影响,因为它们是一种“遗留代码”,我知道它们已经可以工作了(更改它们可能会破坏模块 A 的结构)。

最佳答案

我终于找到了问题所在,这是我的解决方法。

当我专门添加 module A 中的类时至module B<class> -tag 我不小心添加了一个父类(super class),其中包含hibernate认为错误的查询。事实上,如果只查看该父类(super class),则查询是错误的,因为其中一个变量仅可用 在子类中(查询如下所示: select new MyPojoClass(x.id, x.var1, x.var2, x.variableAvailableInSubClass) from MyTable x )。为了解决这个问题,我添加了所有子类 <class> ,使 hibernate 能够解析所有依赖项和查询。

关于java - hibernate中具有多个模块的构造函数表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35321961/

相关文章:

java - 如何在 O(n) 的排序数组中找到两个总和为给定数字的数字?

android - 具有水平滚动的嵌套 RecyclerView 中的滚动行为

java - hibernate中的@GenerateValue(strategy = IDENTITY)在部署时不会生成relation(table)

Java volatile 和副作用

java - 如何在 Java 中创建通用数据类型值的多重映射

xml - SQL 2008 XML 存储

xml - 转换文本中的 XML 标签

hibernate - failed.org.hibernate.MappingException : Could not determine type for: String, 列 : [org. hibernate.mapping.Column(db col name)

java - 在 hibernate 中加入复合主键的某个属性

java - 如何调用传递到 XSLT 的 Java 实例上的方法?