SpringBoot - ERROR: NonUniqueResult

0

witam,
proszę o podpowiedź
mam listę Playersów z polem playerClub
w repo utworzylem wlasne Query Method: findAllByPlayerClub(Club club)

niestety, po wywolaniu, wykrzacza mi się z takim czymś:
javax.persistence.NonUniqueResultException: query did not return a unique result: 21
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:128) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1672) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
at org.hibernate.query.criteria.internal.compile.CriteriaQueryTypeQueryAdapter.getSingleResult(CriteriaQueryTypeQueryAdapter.java:111) ~[hibernate-core-5.6.1.Final.jar:5.6.1.Final]
ten NoNUnique to podobno wtedy gdy znajdzie wiecej niz 1 wynikow / rzędów(???)
z tym, ze ja chcę WSZYSTKICH z danego klubu....

0

@k1313:

Co pytanie ma wspólnego ze Spring Boot ?
Rozumiesz choć w zarysach architekturę Springa ?

k1313 napisał(a):

witam,
proszę o podpowiedź
mam listę Playersów z polem playerClub
w repo utworzylem wlasne Query Method: findAllByPlayerClub(Club club)

Kolejne opowieści o kodzie, zamiast kodu

0

Repo:

@Repository
public interface PlayerRepository extends JpaRepository<Player, Long>{

    Player findAllByPlayerClub(Club club);}
  @Repository
public interface ClubRepository extends JpaRepository<Club, Long> {

    Club findByClubId(long clubId);

}
 Kontroler:
      @GetMapping("/{clubId}")
    public String players(@PathVariable long clubId, Model model) {
        Club club = this.clubRepository.findByClubId(clubId);
        model.addAttribute("players", this.playerRepository.findAllByPlayerClub(club));
        return "players";
    }
4

Z tych szczątków informacji wróżę, że findAllByPlayerClub w PlayerRepository zwraca Player zamiast Set<Player> bądź List<Player i stąd wynika problem.

2

Nazwa findAllByPlayerClub jest myląca (dla autora kodu również).
Ma być raczej: findPlayersByClub
Ponieważ: All - nie wnosi nic, Player - w liczbie pojedynczej co sugeruje że masz zwrócić jeden obiekt, ByPlayer - to zupełnie ewidentne kłamstwo.
Dobra nazwa to połowa sukcesu.

0
_13th_Dragon napisał(a):

Nazwa findAllByPlayerClub jest myląca (dla autora kodu również).
Ma być raczej: findPlayersByClub
Ponieważ: All - nie wnosi nic, Player - w liczbie pojedynczej co sugeruje że masz zwrócić jeden obiekt, ByPlayer - to zupełnie ewidentne kłamstwo.
Dobra nazwa to połowa sukcesu.

A to nie jest ta (dla mnie długofalowo obłędna) filozofia, że z nazwy Spring Data wyprowadza implementację ? To jest jak sprzedanie duszy diabłu za niewielki bonus.

@Grzyboo:

+!. To jest tak totalnie zamotane, że się nie chciałem stresować w dzień wolny odpowiedzią.

@k1313:

Spring bez naprawdę, naprawdę dobrego ugruntowania w Javie zrobi ci krzywdę.

0
Grzyboo napisał(a):

Z tych szczątków informacji wróżę, że findAllByPlayerClub w PlayerRepository zwraca Player zamiast Set<Player> bądź List<Player i stąd wynika problem.

fakt.... poszło . dzięki

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