Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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
Maven Spring启动-带QueryDSL自定义查询实现的JPA-实体未映射错误_Maven_Jpa_Spring Boot_Querydsl - Fatal编程技术网

Maven Spring启动-带QueryDSL自定义查询实现的JPA-实体未映射错误

Maven Spring启动-带QueryDSL自定义查询实现的JPA-实体未映射错误,maven,jpa,spring-boot,querydsl,Maven,Jpa,Spring Boot,Querydsl,我是spring boot新手,尝试使用Querydsl生成自定义查询。我想根据用户选择的条件生成查询。 我已经为此编写了一个管理器类,在那里我将解析用户选择并生成查询 经理级 public class ActionServiceManager { @Autowired private DefinitionRepository definitionRepository; @PersistenceContext (unitName = "Firs

我是spring boot新手,尝试使用Querydsl生成自定义查询。我想根据用户选择的条件生成查询。 我已经为此编写了一个管理器类,在那里我将解析用户选择并生成查询

经理级

public class ActionServiceManager { 
        @Autowired
        private DefinitionRepository definitionRepository;

        @PersistenceContext (unitName = "FirstEntityManagerFactory") 
        private EntityManager em;

    public void search(String Name) throws Exception  {
        //Method1
    QDefinition definition = QDefinition.definition;
    BooleanExpression active = definition.deleted.isFalse();
    List<Definition> ww =new JPAQuery(em)
     .from(definition).where(active)
     .list(definition);

        //Method2 
        List<Definition> def = em.createQuery(
                   "SELECT id FROM definition WHERE deleted = false",Definition.class
                  ).getResultList();

    }
    }
@Entity
@DynamicInsert
@DynamicUpdate
@Table(name = definition", uniqueConstraints = @UniqueConstraint(columnNames = { "name", "id" }))
public class Definition  {

    private static final long serialVersionUID = 1L;

    @Id
    private Long id;
    @Column(name = "subject_id")
    private Long subjectId; 
    @Column(name = "status")
    private String Status;
    @Column(name = "name")
    private String name;
    @Column(name = "active")
    private boolean active;
    @Column(name = "deleted")
    private boolean deleted;

    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
/*
*all get set methods
*
*
*/
这两种方法我都试过了。它会导致以下错误。但按住CTRL键并单击可从管理器类映射到实体。任何帮助都将不胜感激

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Definition is not mapped [SELECT name FROM Definition WHERE deleted = false]
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:189)
        at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109)
        at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:95)
        at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:338)
        at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3678)
        at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3567)
        at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:708)
        at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:564)
        at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
        at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)
        at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
        at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
        at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
        at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:131)
        at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:93)
        at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)
        at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:未映射定义[从定义中选择名称,其中已删除=false]
位于org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:189)
位于org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109)
位于org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:95)
位于org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:338)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3678)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3567)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:708)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:564)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.docomFile(QueryTranslatorImpl.java:206)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
位于org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:131)
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:93)
位于org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)
位于org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)

请添加@Configuration类。。包括任何自定义entitymanager/会话工厂definitions@MaciejKowalski谢谢你的回复。很抱歉因为耽搁了。我可以通过使用
@PersistenceContext
注释来解决这个问题。应用程序使用两个数据源。当我初始化实体管理器时,它将使用“FirstEntityManagerFactory”进行初始化,查询将在管理器工厂中查找实体。但实际上,实体位于SecondEntityManagerFactory中。我使用了
@PersistenceContext
注释。但我不知道问题就在那里。