Jpa QueryDSL连接表错误
我试图使用QueryDSL连接表,获取列表时出错 SearchPersonPredicates.javaJpa 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
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);