是否可以避免在自定义@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 应用程序中使用?

在自定义分类模板中的 WP_Query 期间查询(2)ACF 发布对象

查询ACF在自定义分类模板中的WP_Query期间发布对象

使用特定标签在自定义帖子类型和分类中搜索

在自定义帖子循环中显示自定义类别

QT C++ 我可以使用自定义 mime 类型在多个应用程序上进行复制和粘贴吗?