我有一个JPA DATA存储库,其中包含某种自定义方法,例如:
@Query(value=<quite-complex-query>, nativeQuery=true)
List<Object> myCustomRepoMethod();
现在的问题是我要返回List<Object>
,而我想返回MyCustomType
的列表,但它无效,因为查询返回了几列显然无法映射到MyCustomType
的字段。
我该如何解决这个问题?
答案 0 :(得分:0)
您是否正在尝试使用@Query(value=<quite-complex-query>, nativeQuery=true) List<MyCustomType> myCustomRepoMethod();
答案 1 :(得分:0)
您可以使用SqlResultSetMapping和ConstructorResult来实现您的目标。
这是如何将SQL结果集映射到POJO的示例:
Query q = em.createNativeQuery(
"SELECT c.id, c.name, COUNT(o) as orderCount, AVG(o.price) AS avgOrder " +
"FROM Customer c, Orders o " +
"WHERE o.cid = c.id " +
"GROUP BY c.id, c.name",
"CustomerDetailsResult");
@SqlResultSetMapping(
name="CustomerDetailsResult",
classes={
@ConstructorResult(
targetClass=com.acme.CustomerDetails.class,
columns={
@ColumnResult(name="id"),
@ColumnResult(name="name"),
@ColumnResult(name="orderCount"),
@ColumnResult(name="avgOrder", type=Double.class)
}
)
}
)