2問題
在本機SQL使用本機SQL :)
@Query(值=「SELECT頁。 * FROM test p「,nativeQuery = true)
您的本機查詢返回Object []或Object []的列表。
如果您向EntityManager提供其他映射信息,則可以更改該設置。
通過這樣做,您可以告訴EntityManager將結果映射到受管實體,特定類型或POJO的標量值。
將本機查詢的結果映射到託管實體的最簡單方法是選擇實體的所有屬性,並將其作爲參數提供給createNativeQuery方法。
(抱歉使用其他實施例)
Query q = em.createNativeQuery("SELECT a.id, a.version, a.firstname, a.lastname FROM Author a", Author.class);
List<Author> authors = q.getResultList();
所有其他映射,如下面的其中一個所述查詢結果映射到POJO,需要被定義爲SQLResultSetMappings。
@SqlResultSetMapping(
name = "AuthorValueMapping",
classes = @ConstructorResult(
targetClass = AuthorValue.class,
columns = {
@ColumnResult(name = "id", type = Long.class),
@ColumnResult(name = "firstname"),
@ColumnResult(name = "lastname"),
@ColumnResult(name = "numBooks", type = Long.class)}))
要使用此映射,您需要提供映射的名稱作爲createNativeQuery方法的參數。
Query q = em.createNativeQuery("SELECT a.id, a.firstname, a.lastname, count(b.id) as numBooks FROM Author a JOIN BookAuthor ba on a.id = ba.authorid JOIN Book b ON b.id = ba.bookid GROUP BY a.id", "AuthorValueMapping");
List<AuthorValue> authors = q.getResultList();