是否可以避免在自定义@Query 上进行类型转换?
Posted
技术标签:
【中文标题】是否可以避免在自定义@Query 上进行类型转换?【英文标题】:Is it possible to avoid typecast on custom @Query? 【发布时间】:2013-05-30 22:56:07 【问题描述】:想象我们有一个实体:
@Entity
public class Person implements Serializable
@Id
private String name;
private Long age;
private Boolean isMad;
...
还有一个存储库,其中包含用于自定义查询的琐碎(且不必要)示例:
@Repository
public interface PersonRepository extends PagingAndSortingRepository<Info, String>
@Query("select p.isMad, count(*) from Person p group by p.isMad")
List<Object> aggregateByMadness();
现在要解析这个列表,我们需要这样做:
for (Object element : list)
Object[] result = (Object[]) element;
Boolean isMad = (Boolean) result[0];
Long count = (Long) result[1];
这很痛苦,我们可以将查询结果直接转换为 POJO 的列表吗?
【问题讨论】:
【参考方案1】:是的,您可以使用JPQL construction expression:
package com.foo;
public class Madness
public Madness(boolean isMad, Number count) /* ...*/
在您的存储库中:
@Query("select new com.foo.Madness(p.isMad, count(*)) from Person p group by p.isMad")
List<Madness> aggregateByMadness();
【讨论】:
以上是关于是否可以避免在自定义@Query 上进行类型转换?的主要内容,如果未能解决你的问题,请参考以下文章
如何将使用 Mask Rcnn 在自定义对象检测上创建蒙版图像的 Keras 模型转换为 CoreML 模型以在 iOS 应用程序中使用?