Jpa QueryDSL连接表错误

Jpa QueryDSL连接表错误,jpa,join,spring-boot,querydsl,Jpa,Join,Spring Boot,Querydsl,我试图使用QueryDSL连接表,获取列表时出错 SearchPersonPredicates.java public static Predicate findQNumberJPA(final Long pId) { QPerson qPerson = QPerson.person; BooleanBuilder booleanBuilder = new BooleanBuilder(); if (pId != null) { booleanBuild

我试图使用QueryDSL连接表,获取列表时出错

SearchPersonPredicates.java

public static Predicate findQNumberJPA(final Long pId) { 
    QPerson qPerson = QPerson.person;
    BooleanBuilder booleanBuilder = new BooleanBuilder();
    if (pId != null) {
        booleanBuilder.and(qPerson.person_no.eq(pId));
    }
    Predicate predicate = booleanBuilder.getValue();
    JPAQuery jpaQuery = new JPAQuery();
    QPersonLine qPersonLine = QPersonLine.personLine; 
    jpaQuery.from(qPerson);
    jpaQuery.join(qPersonLine);
    jpaQuery.on(qPerson.person_no.eq(qPersonLine.person_no));
    jpaQuery.where(qPerson.person_no.eq(pId));
    List<Person> list = jpaQuery.list(qPerson);  \\Line : 84
    logger.info("List size of Persons :"+list.size());
    return predicate;
}
pom.xml:

<dependency>
    <groupId>com.mysema.querydsl</groupId>
    <artifactId>querydsl-core</artifactId>
    <version>3.3.2</version>
</dependency>

<dependency>
    <groupId>com.mysema.querydsl</groupId>
    <artifactId>querydsl-apt</artifactId>
    <version>3.3.2</version>
</dependency>

<dependency>
    <groupId>com.mysema.querydsl</groupId>
    <artifactId>querydsl-jpa</artifactId>
    <version>3.3.2</version>
</dependency>
我不知道为什么附加了
?1
。它实际上应该分配我从控制器传递的值。有人能帮忙解决这个问题吗?

对于您的Querydsl代码,我已经确定原因是一个空的
EntityManager

JPAQuery jpaQuery = new JPAQuery();
这是因为在构建JPAQuery时,您没有传入
EntityManager

JPAQuery jpaQuery = new JPAQuery();
这应该是

JPAQuery jpaQuery = new JPAQuery(entityManager);

关于你的
?1
,我建议你仔细阅读。

谢谢你的回复。我已经用pom.xml中的QueryDSL版本更新了这个问题。由于
AbstractJPAQuery.java
位于
com.mysema.query.jpa.impl
内,因此我无法找到哪个变量为null。我从controller传递的唯一变量是pId,正确的值是从controllerI传递的。我添加了一个错误的引用,您必须向存储库bean注入
EntityManager
,但我对Spring数据没有太多经验。尽管如此,我还是希望它有用。非常感谢。我的应用程序使用SpringBoot。我不知道如何注入EntityManager或EntityManager工厂。我发现它实际上不是Spring数据,我已经更新了答案,但您仍然需要配置
EntityManager
bean。我不知道Spring Boot团队是否经常浏览,但你可以在他们的gitter聊天室里询问。好的。。我会照你的建议去问的。
JPAQuery jpaQuery = new JPAQuery();
JPAQuery jpaQuery = new JPAQuery(entityManager);