我需要按如下顺序进行一对多排序:

例如:

category sub category
1 1
1 2
2 1
2 2
2 3
3 1

数据模型:

enter image description here

Java代码/映射:

类别类别

package br.com.bank.adapter.repository.entity;

import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Set;

@Entity
@Getter
@Setter
@Table(name = "category")
public class CategoryEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

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

@Column(name = "update_at")
private LocalDateTime update;

@OneToMany(mappedBy = "category", orphanRemoval = true, cascade = CascadeType.ALL)
private Set<SubCategoryEntity> subCategoryEntity = new HashSet<>();

}

Sub类别类别

package br.com.bank.adapter.repository.entity;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
@Getter
@Setter
@Table(name = "sub_category")
public class SubCategoryEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

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

@Column(name = "update_at")
private LocalDateTime update;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "category_id", nullable = false)
private CategoryEntity category;

}

使用上面的代码,我得到以下结果:

category sub category
1 1
1 2
2 3
2 4
2 5
3 6

推荐答案

try 使用以下配置,让JPA供应商设置您自己的序列(例如Hibernate).

public class SubCategoryEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SequenceSubCategoryId")
    @SequenceGenerator(name = "SequenceSubCategoryId", sequenceName = "SUB_CATEGORY_SEQ")
    private Long id;

    ....
    }

这样,将从数据库中创建的相同序列中检索id,并且在每个新请求中总是增加1.

如果您已经设置了该属性,这将起作用

spring.jpa.hibernate.ddl-auto,使用以下值createcreate-dropupdate之一,以便允许hibernate在模式中自动为您创建此序列.

如果没有以这种方式配置此属性,则还需要在数据库中执行DDL脚本以创建名为SUB_CATEGORY_SEQ的序列

Java相关问答推荐

为什么我们仍然需要实现noArgsConstructor如果Java默认提供一个非参数化的构造函数?''

Java List with all combinations of 8 booleans

弹簧靴和龙目岛

如何以干净的方式访问深度嵌套的对象S属性?

Java FX中的河内之塔游戏-在游戏完全解决之前什么都不会显示

我找不到&Quot;配置&的位置

相同的Java SerializedLambda为implMethodKind返回不同的结果

如何在Java中从XML中获取特定的 node ,然后将其删除?

如何在antlr4中跳过所有反斜杠-换行符而保留换行符?

try 使用Spring集成和MySQL实现发件箱模式时,锁定等待超时

在Ubuntu 23.10上使用mp3创建JavaFX MediaPlayer时出错

Java.lang.invke.LambdaConversionException:实例方法InvokeVirtual的参数数量不正确

根本不显示JavaFX阿拉伯字母

Android Studio模拟器没有互联网

为什么没有加载java.se模块?

如何使用Java ZoneID的区域设置?

无限递归Java问题

使用DynamoDB增强客户端时未更新属性

可以';不要在Intellij IDEA中使用最新的Java版本(JDK 21)

在JPanel上使用GridBagLayout并将JButton放在里面时出现问题