Subselect w @NamedQuery, problem

0

Cześć, mam prostą relację Tematu, który ma wiele postów.

Chciałbym za pomocą @NamedQuery wyszukać Temat, który ma najmniejszą ilość postów.

Zrobiłem takie @NamedQuery, ale dostaję error, że tabela TOPICENTITY nie istnieje oO

@NamedQuery(
        name = "TopicEntity.findWithLeastNumberOfPosts",
        query = "select t from TopicEntity t join t.posts p " +
                "group by t " +
                "having count(p) = (select min(count(p2)) from Topic t2 join t2.posts p2 group by t2)")
1

W JPA się nie używa nazw tabel, tylko encji ?

Oprócz natywnych

0

Tak, encji

0

O, a teraz zacząłem dostawać:
Caused by: org.h2.jdbc.JdbcSQLException: Skalarna pod-kwerenda zawiera więcej niż jeden wiersz
Scalar subquery contains more than one row; SQL statement:

0

Ktoś wie jak można w tym JPQL zrobić maxa z counta?

0
Bambo napisał(a):

O, a teraz zacząłem dostawać:

Caused by: org.h2.jdbc.JdbcSQLException: Skalarna pod-kwerenda zawiera więcej niż jeden wiersz
Scalar subquery contains more than one row; SQL statement:

To oznacza że podzapytanie zwraca więcej niż jeden wynik, i dlatego nie można zrobić przyrównania.

"having count(p) = (select min(count(p2)) from Topic t2 join t2.posts p2 group by t2)")

Czy sprawdzałeś czy ten select wewnątrz zwraca jeden wynik? bo wygląda że dostaniesz min ale dla każdej grupy.

0

@Karaczan: tak, ten min zwraca dla każdej grupy, więc muszę zrobić "select max from select count" - tylko ze w jpa to chyba nie działa. Nie mogę dać aliasu dla subselecta.

EDIT ogarnąłem. Trzeba @NamedNativeQuery

1 użytkowników online, w tym zalogowanych: 0, gości: 1