Java 如何使用maven子项目中的Hibernate/QueryDSL实体

Java 如何使用maven子项目中的Hibernate/QueryDSL实体,java,hibernate,maven,querydsl,Java,Hibernate,Maven,Querydsl,目前我的项目看起来像: Root -- Common (Contains Entity classes) -- Processor (Refers Common) Common和Controller都是maven项目(每个项目都部署在自己的Jetty实例中-Common是面向用户的Jetty服务器,processor是后端守护程序,当前也运行在Jetty服务器中,因为它也是为响应一些内部http请求而设计的)。Root包含公共和处理器的父pom 当我共同执行与DB相关的操作时,它工作得

目前我的项目看起来像:

Root

 -- Common (Contains Entity classes)

 -- Processor (Refers Common)
Common和Controller都是maven项目(每个项目都部署在自己的Jetty实例中-Common是面向用户的Jetty服务器,processor是后端守护程序,当前也运行在Jetty服务器中,因为它也是为响应一些内部http请求而设计的)。Root包含公共和处理器的父pom

当我共同执行与DB相关的操作时,它工作得非常好

但当我从处理器调用相同的函数时,它会给出一个错误:

java.lang.IllegalArgumentException: 

org.hibernate.hql.internal.ast.QuerySyntaxException:

User is not mapped [select users from User users fetch all properties]

    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1679)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1608)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:294)
    at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:129)
    at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:96)
    at com.mysema.query.jpa.impl.AbstractJPAQuery.list(AbstractJPAQuery.java:248)
    at com.myproject.common.persistence.UserManager.selectStar(UserManager.java:110)
但是,UserManager.selectStar()在普通模式下工作得非常好。 公共和处理器都有查询dsl插件来生成Q文件。 Common和Processor都有META-INF/persistence.xml文件

UserManager将EntityManagerFactory实例化为:

emf = Persistence.createEntityManagerFactory("world");
其中“world”是我的数据库的名称

./common/src/main/resources/META-INF/persistence.xml
./processor/src/main/resources/META-INF/persistence.xml
处理器依赖于以下公共组件:

<!-- language: lang-xml -->
<dependency>
  <groupId>com.mock</groupId>
  <artifactId>common</artifactId>
</dependency>

com.mock
常见的

所有依赖项版本也在根pom部分进行管理。

看起来您的处理器项目中没有正确配置SessionFactory

能否将pom文件添加到问题和hibernate配置文件中

我猜您的处理器项目是web前端,而您的公共项目是您的域

如果在这种情况下,您应该将公共项目添加为处理器项目的依赖项,那么您将能够从处理器项目启动查询,因为您将使用公共项目hibernate上下文


问候。

您提供的信息不足。您使用的是Spring,这是一个WebApp还是单机版


此外,您不需要创建两个
persistence.xml
文件。检查您是如何基于witch
持久化单元创建
EntityManager
->?

请根据其他人的要求提供所有必要的信息。这是一个网络应用程序吗?你在用弹簧吗?请为pom.xml文件添加完整代码

正如其他同事所说,您只需要一个persistence.xml。在数据库上执行的所有查询都应在相同的hibernate上下文中运行

此外,如果职责分离,那么处理器项目不应该执行任何查询,只需要请求一些公共项目层来执行它并返回结果


问候。

我已将问题的完整代码重新发布在,请在那里回复,我将简短删除此问题谢谢!我已经用完整的代码重新发布了这个问题,请在那里回复,我会很快删除这个问题谢谢gorri!我已将问题的完整代码重新发布在请在那里回复,我将立即删除此问题可能的副本