亲子类别重复问题

问题描述

我有以下问题。我到处搜索,找不到相似的帖子。我有一个包含产品类别的枚举(枚举)文件,其主要目的是当我启动应用程序以将类别填充数据库时。类别是父子类型。问题是当我添加具有父项的类别时,它会再次添加父项(重复项)。

示例: 我有以下类别:

category1

  • category2 (类别1的子类别)
  • category3 (类别1的子类别)

在数据库中,它将添加cat1,cat2,cat3,cat1,cat1,并且在添加新的子类别后,它将复制父对象多次。

Type.class

@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "types")
public class Type extends BaseEntity {

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

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "parent_id",referencedColumnName = "id")
private Type parent;

@OneToMany(mappedBy = "parent")
private List<Type> children;
}

TypeData.java(枚举)

在这里我创建类别。如果category应该有一个父项,则将其添加,否则,将其保留为空。

@Getter
public enum TypeData {
CATEGORY_1("Category 1",null),CATEGORY_2("Category 2",CATEGORY_1),CATEGORY_3("Category 3",CATEGORY_1);

private final String name;
private final TypeData parent;

TypeData(String name,TypeData parent) {
    this.name = name;
    this.parent = parent;
}
}

TypeInitialData.java

启动应用程序时,此文件将类别加载到数据库。

@Component
public class TypeInitialData {

private final TypeService typeService;
private final ModelMapper modelMapper;

@Autowired
public TypeInitialData(TypeService typeService,ModelMapper modelMapper) {
    this.typeService = typeService;
    this.modelMapper = modelMapper;
}

@PostConstruct
public void init() {
    Arrays.stream(TypeData.values())
            .forEach(x -> this.typeService.addType(this.modelMapper.map(x,Type.class)));
}
}

解决方法

您是否尝试过设置与父项碰撞的吸气剂。另外,孩子必须是两个孩子中的一个,另一个必须是多对多的。删除第二个父对象并将其添加到数据库中。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...