gpt4 book ai didi

java - spring jpa中如何自动按顺序生成id?

转载 作者:行者123 更新时间:2023-12-05 05:41:00 25 4
gpt4 key购买 nike

我需要做一个一对多的序列如下:

例如:

<表类="s-表"><头>类别子类别<正文>111221222331

数据模型:

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<>();

}

子类别类

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;

}

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

<表类="s-表"><头>类别子类别<正文>111223242536

最佳答案

尝试使用以下配置让 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 - spring jpa中如何自动按顺序生成id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72333141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com