Java QueryDsl-创建子查询在两个表上运行的查询
我是这个API的新手,在子查询方面遇到了一些问题。我正在使用Java QueryDsl-创建子查询在两个表上运行的查询,java,jpa,jakarta-ee,querydsl,Java,Jpa,Jakarta Ee,Querydsl,我是这个API的新手,在子查询方面遇到了一些问题。我正在使用QueryDsl-JPA。我有两个表格,例如电影和制片人。在Producer表中,我有一个主键Producer\u id,在我的Film表中,我还有一个字段作为Producer\u id,并且它是连接的。我的目标是使用QueryDsl计算特定制作人的电影实体的数量 我写了类似的东西: QFilm film = QFilm.film; QProducer producer = QProducer.producer; createQuery
QueryDsl-JPA
。我有两个表格,例如电影
和制片人
。在Producer
表中,我有一个主键Producer\u id
,在我的Film
表中,我还有一个字段作为Producer\u id
,并且它是连接的。我的目标是使用QueryDsl
计算特定制作人的电影
实体的数量
我写了类似的东西:
QFilm film = QFilm.film;
QProducer producer = QProducer.producer;
createQuery().from(film, producer).select(film.count())
.where(film.producerId.eq(producer.producerId)).fetch();
我得到了所有匹配结果的总和,例如在制片人
表中我有2个制片人,在电影
表中我有4个电影。第一个制片人有两部电影,第二个制片人也有两部。这个查询的结果是4。但我希望这个特定的查询对于第一个生产者只返回2,对于第二个生产者只返回2。如何存档 您没有提到两个db字段(OneToMany、OneToOne e.t.c)之间的关系。另外,您正在声明一个QFilm
和QProducer
实例,而没有在查询中实际使用它们
假设producer.producer\u id
-film.producer\u id
之间存在一对一的关系,并且您正在使用Querydsl生成的元模型类,我将尝试以下方法:
QFilm qFilm = QFilm.film;
long count = creatyQuery().selectFrom(qFilm).where(qFilm.producerId.eq(yourDesiredProducerId)).fetchCount();
QFilm QFilm=QFilm.film;
long count=creatiyquery().selectFrom(qFilm).where(qFilm.producerId.eq(yourDesiredProducerId)).fetchCount();