如果所述 ID 是实体的唯一唯一值,如何从客户端提供自动增量 ID?

How to provide an autoincrement ID from the client side, if said ID is the only unique value of the entity?

我正在使用 Java 以及 Spring 启动和休眠。 我主要对几乎所有实体使用自动递增主键。 我有一个实体,它的主键是自动增量。这是所述实体的唯一值。

关于我要实现的目标的上下文,我需要一种方法来验证实体是否存在于数据库中 table,我也在尝试实现更新或删除所述实体的方法。在这种情况下,class 工作经验的实体。

@Entity
@Table(name = "user")
public class User {

    //<editor-fold defaultstate="collapsed" desc="Variable Def">
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long id;

    @Column(name = "user_name", unique = true)
    @Getter
    @Setter
    private String user_name;

    @Column(name = "password")
    @Getter
    @Setter
    private String password;

    @Column(name = "reset_password_token")
    @Getter
    @Setter
    private String reset_password_token;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "person_id", referencedColumnName = "id")
    @Getter
    @Setter
    private Person person;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "role_id", referencedColumnName = "id")
    @Getter
    @Setter
    private Role role;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "business_profile_id", referencedColumnName = "id")
    @JsonBackReference
    @Getter
    @Setter
    private BusinessProfile business_profile;
    //</editor-fold>

    @OneToOne(mappedBy = "user")
    private UserRecord record;

    @OneToOne(mappedBy = "publisher")
    private JobHiredRecord job_hired_record_publisher;

    @OneToOne(mappedBy = "customer")
    private JobHiredRecord job_hired_record_customer;


}

这是我的用户 class,我对用户没问题,因为用户名也是唯一值,所以我按用户名搜索。

我可以向用户添加 1 个业务资料,并且在该业务资料中 class,我可以添加工作经验列表。这是我的工作经历class:

@Entity
@Table(name = "work_experience")
public class WorkExperience {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long id;

    @Column(name = "title")
    @Getter
    @Setter
    private String title;

    @Column(name = "company_name")
    @Getter
    @Setter
    private String company_name;

    @Column(name = "start_date", columnDefinition = "DATE")
    @Getter
    @Setter
    private Date start_date;

    @Column(name = "end_date", columnDefinition = "DATE")
    @Getter
    @Setter
    private Date end_date;

    @Column(name = "description")
    @Getter
    @Setter
    private String description;

    @ManyToOne
    @JsonBackReference
    @JoinColumn(name = "business_profile_id", referencedColumnName = "id")
    @Getter
    @Setter
    private BusinessProfile business_profile;

}

假设我向数据库添加了 2 个工作经验实体,它们具有相同的标题、描述和日期到相同的业务配置文件,基本上完全相同,除了由数据库自动生成的 ID。如果我想更新其中一个实体,我需要通过客户端提供它们的 ID(这是我遇到的问题,不确定如何实现),或者从 server-side (我正在使用 Hibernate 和 spring 启动)。我该怎么做?

如果你使用的是像save()这样的JpaRepository函数,只要没有抛出异常,你就可以假设记录已经被添加到数据库中,所以你不需要检查它是否存在。那将是浪费时间。