V předchozím příspěvku jsem ukázal základní možnost projekce ve Spring Data. Na pár věcí je ale třeba si dávat pozor. Je možné používat @Query
a také nativní @Query(nativeQuery = true)
, ale je třeba specifikovat název výsledného sloupce pomocí klíčového slova AS
.
@Query("SELECT b.title AS title, b.numberOfPages AS numberOfPages FROM BookEntity b") fun findAllInfo(): List<BaseBookInfo> @Query("SELECT b.title AS title, b.numberOfPages AS numberOfPages FROM t_book b", nativeQuery = true) fun findAllInfoNative(): List<BaseBookInfo>
Pokud byste to neudělali, našel by se sice správný počet záznamů, ale všechny záznamy by měly všechny hodnoty null (nebo by došlo k vyhození výjimky v případě přístupu k primitivním datovým typům).