小编Joc*_*lle的帖子

使用 Spring Data 将结果集与实体和计数进行映射的首选方法

通常有一个业务问题来显示所有类别以及这些类别的使用频率。

这个问题很容易通过查询来回答:

SELECT c.*, count(*) FROM category_assignment ca LEFT JOIN category c on ca.c_id = c.id group by c.id
Run Code Online (Sandbox Code Playgroud)

我要问的是您建议的基于以下内容映射结果集的方法:

@Entity
public class CategoryAssignment {
    @Id
    int id;

    @ManyToOne(fetch = FetchType.EAGER)
    private Category category;

    @ManyToOne(fetch = FetchType.EAGER)
    private Car car;
}


@Entity
public class Category {
    @Id
    String id;
    TypeEnum type;
    ...
}

@Entity
public class Car {
    @Id
    int id;
    String name;
    ...
}
Run Code Online (Sandbox Code Playgroud)

从我的角度来看,映射的最佳结果是从存储库调用中获取一个包含类别作为实体和计数编号作为附加变量的自定义对象:

MappingResult result = repository.getCategoriesAndTheirCountOfType(TypeEnum type);

public class MappingResult {
    Category category;
    BigInteger count;
} …
Run Code Online (Sandbox Code Playgroud)

jpa hql spring-data

1
推荐指数
1
解决办法
2774
查看次数

标签 统计

hql ×1

jpa ×1

spring-data ×1