java - 我们如何通过Jpa获取完整的分层数据列表

标签 java mysql spring-boot spring-data-jpa

作为我们数据端的需求,有一个mysql表结构如下:

id  category_id category_name   parent_id   delete_status
 3  145         Lip Makeup      123           0
 2  134         Face Makeup     123           0
 1  123         Makeup          0             0

数据结构像树,重新编码 id = 1 是其他 2 条记录(id = 2 和 id = 3)的父亲。连接列是parent_id,映射DTO是:

@Entity
@Data
@Table(name = "category_tab")
public class CategoryDto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false, length = 20)
private long id;

@Column(name = "category_id", nullable = false)
Long categoryId;

@Column(name = "category_name", nullable = false)
String name;

@Column(name = "parent_id", nullable = false)
Long parentId;

@Column(name = "delete_status", nullable = false)
Integer deleteStatus;

@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id", insertable = false, updatable = false)
private Set<CategoryDto> children = new HashSet<>();

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    ShopeeCategoryDto that = (ShopeeCategoryDto) o;
    return Objects.equals(categoryId, that.categoryId) &&
            Objects.equals(name, that.name);
}

@Override
public int hashCode() {
    return Objects.hash(categoryId, name);
}}

现在我想获取 CategoryDto 的完整列表,其中包含其子列表,因为随后可以轻松处理它。就像 DaoImpl:

List<CategoryDto> fetchAll();

那么这个方法应该怎么实现呢?我用的是spring boot + Jpa框架

最佳答案

@Query("select category from CategoryDto category where category.deleteStatus != ?1")
CategoryDto findAllBydeleteStatus(Integer deleteStatus);

文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation

关于java - 我们如何通过Jpa获取完整的分层数据列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57708620/

相关文章:

java - 为什么在采用 int 参数的 BufferedOutputStream write 方法中将 int 转换为 byte?

c# - 如何将mysql表中的数据添加到C#表单中

java - JAVA中SQL语句的where子句中使用变量

spring-boot - 第一次调用时出现 ZuulException (SendErrorFilter)

java - 使用java highlevelrestclient从elasticsearch查询数据

java - 仅针对内容类型 x-www-form-urlencoded 接受 Spring + Spring Security 请求

java - 如果编译器自动将字符串连接转换为 StringBuilder,为什么要显式使用 StringBuilder?

java - 是否有用于 java 的反汇编器 + 调试器(用于汇编器的 ala OllyDbg/SoftICE)?

java - java原始整数是设计的还是偶然的?

php - 使用php和mysql生成嵌套菜单的链接