spring repository Query + count

0

Witam.
Mam interface:

@Repository
public interface HistoryRepository extends JpaRepository<History, Long> {

    @Query(value = "select h from History h where h.ownerType = :type and h.newValue like %:name% group by h.ownerId")
    Page<History> findHistories(@Param("name") String name, @Param("type") String type, Pageable pageable);
}

Powyższy przykład działa prawidło i zwraca poprawne rekordy wykonując zapytanie.

Chciałbym zmodyfikować to zapytanie w @Repository aby wykonywało dodatkowo zliczenie zagregowanych rekordów.
W mysql workbench działa mi poniższe zapytanie:

SELECT owner_id,count(owner_id) FROM admin_bipnew.HISTORY where NEWVALUE like '%Wies%' group by owner_id;

Czy jest możliwość użycia tego zapytania w @Repository?

0

Źle się do tego zabierasz. Nie pytaj się czy jest możliwość. Przetestuj u siebie. Jeśli działa, to znaczy, że można. Jeśli nie działa, to zdebuguj. Jeśli nic nie dało ci debugowanie, to wtedy zapytaj na forum DLACZEGO tego nie można użyć :)

0

Może rzeczywiście źle zadane pytanie.
Ale udało mi się to przejść:

@Query(value = "select count(h), h.newValue, h.ownerId, h.ownerType, h.newValue from History h where h.ownerType = :type and h.newValue like %:name% group by h.ownerId")

Następny problem mam z wyświetleniem tej wartości.
Dotychczas w kontrolerze miałem kod:

Page<History> resultPage =
                historyService.loadHistories(historySearchCriteria.getNewValue(), historySearchCriteria.getCondition()
                        .toString(), pageable);
 
        iTotalRecords = (int) resultPage.getTotalElements();
        int iTotalDisplayRecords = iTotalRecords;
        PageResultDTO<History> result = new PageResultDTO<History>();
        result.setsEcho(request.getParameter("sEcho"));
        result.setiTotalDisplayRecords(iTotalDisplayRecords);
        result.setiTotalRecords(iTotalRecords);
        result.setAaData(resultPage.getContent());
     

        return result;

który zwracał dobrze wartości i wstawiał do tabelki.

Teraz nie wiem jak użyć tej wartości z count, ponieważ nie ma nazwy (tak jak np. newValue).
 
Próbowałem dać w query count(h) as nr i dodałem w encji history pole nr:

private int nr;

@Transient
    public int getNr() {
        return nr;
    }

    public void setNr(int nr) {
        this.nr = nr;
    }

Wynik jest taki że zwraca mi alert:
Requested unknown parameter nr.

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