![](/img/trans.png)
[英]How to map sql native query result into DTO in spring jpa repository?
[英]JPA mapping native query result to non entity DTO
我有一個復雜的本機查詢,我正在嘗試將其結果映射到非實體 DTO 類。 我正在嘗試將JPA
的SqlResultSetMapping
與ConstructorResult
SqlResultSetMapping
使用
我的 DTO 課
@Data
public class Dto {
private Long id;
private String serial;
private Long entry;
private int numOfTasks;
}
我的實體類,它具有存儲庫接口,我將稱之為本機查詢結果。
@SqlResultSetMapping(
name = "itemDetailsMapping",
classes = {
@ConstructorResult(
targetClass = Dto.class,
columns = {
@ColumnResult(name = "ID"),
@ColumnResult(name = "SERIAL"),
@ColumnResult(name = "ENTRY"),
@ColumnResult(name = "TASKS")
}
)
}
)
@NamedNativeQuery(name = "getItemDetails", query = "complex query is here", resultSetMapping = "itemDetailsMapping")
@Entity
@Data
public class Item {}
存儲庫
@Repository
public interface ItemRepository extends JpaRepository<Item, Long> {
...
List<Dto> getItemDetails();
}
當我從ItemRepository
調用getItemDetails()
, ItemRepository
以下錯誤:
org.springframework.data.mapping.PropertyReferenceException:找不到類型 Item 的屬性 itemDetails
使用SqlResultSetMapping
和ConstructorResult
並解決此問題的正確方法是什么。
任何幫助,將不勝感激。
要使用命名查詢,命名查詢的名稱必須以實體名稱作為前綴:
@NamedNativeQuery(name = "Item.getItemDetails",
query = "complex query is here", resultSetMapping = "itemDetailsMapping")
那么接口方法必須與沒有前綴的命名查詢同名:
List<Dto> getItemDetails();
——
在參考文檔https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.named-queries 中閱讀有關 Spring Data JPA 和命名查詢的更多信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.