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!我已将问题的完整代码重新发布在请在那里回复,我将立即删除此问题可能的副本