JPA-запрос с функцией подсчета - PullRequest
1 голос
/ 04 марта 2020

У меня есть две сущности A и B, как показано ниже:

@Entity
public class A {
   @Id
   private int id;
   private String name;
   private boolean hasFailedChild;

   @OneToMany
   private List<B> bs;

   public A(String name, long count) {
      this.name = name;
      this.hasFailedChild = (count > 0);
   }
}

@Entity
public class B {
   @id
   private int id;
   private String name;
   private String status;
   @ManyToOne
   private A a;

   //required constructors
}

Я пытаюсь получить все A s вместе со счетом B s со статусом Failed используя @Query.

Я пробовал с помощью приведенного ниже запроса:

public interface ARepository extends CrudRepository<A, Integer> {

   @Query(value = "select new A(a.name, count(b)) " +
            "from A a left join a.bs b where b.status = 'Failed'")
   List<A> findAllA();
}

Однако он не работает. Может ли кто-нибудь помочь мне здесь.

1 Ответ

1 голос
/ 04 марта 2020

Вы должны исправить свой запрос следующим образом:

select new A(a.name, count(b))
from A a
left join a.bs b
where b.status = 'Failed'
group by a.name

Дополнительные сведения см. В документации .

...