[MySql][JPA][Hibernate] Mapowanie widoków

0

Witam zmagam się z niewielką zagwozdką. Widok nie zawiera id, więc nie mogę mapować go w JPA, dlatego wpadłem na pomysł ażeby widok zawierał ID, jako
zwykły numer wiersza. Omijając ograniczenie na to ażeby widok nie zawierał zmiennych utworzyłem funkcję. W momencie uruchomienia poniższego zapytania:

SET @rowNumber = 0;

CREATE FUNCTION  getIncrementedRowNumber(increaseValue INT(5)) RETURNS INT(5)
RETURN @rowNumber:= @rowNumber+increaseValue;

SELECT getIncrementedRowNumber(1) AS ID, t1.category, t1.total_sales
FROM (
         SELECT c.name        AS category
              , SUM(p.amount) AS total_sales
         FROM payment AS p
                  INNER JOIN rental AS r ON p.rental_id = r.rental_id
                  INNER JOIN inventory AS i ON r.inventory_id = i.inventory_id
                  INNER JOIN film AS f ON i.film_id = f.film_id
                  INNER JOIN film_category AS fc ON f.film_id = fc.film_id
                  INNER JOIN category AS c ON fc.category_id = c.category_id
         GROUP BY c.name
         ORDER BY total_sales DESC
     ) t1,
     (SELECT getIncrementedRowNumber(0)) t2;

Otrzymuję przyzwoite wyniki takie jak oczekiwane

ID category total_sales
1 Sports 5314.21
2 Sci-Fi 4756.98
3 Animation 4656.30
4 Drama 4587.39

Ale dodanie CREATE VIEW sales_by_film_category AS ... powyższe zaptanie nuluje ID, w momencie gdy funkcja getIncrementedRowNumber zwraca na sztywno jakaś wartość to w widoku wartość ta pojawia się poprawnie.
Jak sprawić by każdy wiersz poprawnie był zapisany tak jak w przykładowym wyciągu zawartym w tabeli ?

1

Dlaczego chcesz mapować widok na encję JPA zamiast na luzaku pobrać sobie dane przez native SQL query?

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