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

67up9zun  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(102)

我正在使用Java的Sping Boot 和Hibernate。我大多数使用自动增量主键为几乎所有我的实体。我有一个实体,其主键是自动增量。这是唯一的值是唯一的说实体。
对于我试图实现的内容,我需要一个方法来验证实体是否存在于数据库表中,我还试图实现更新或删除所述实体的方法。在本例中,是工作经验类的实体。

@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;

}

这是我的用户类,我对用户没有问题,因为用户名也是一个唯一的值,所以我按用户名搜索。
我可以向用户添加1个业务配置文件,并在该业务配置文件分类中添加工作经验列表。这是我的工作经验分类:

@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个Work Experience实体,这些实体具有相同的标题、描述和日期,并具有相同的业务配置文件,除了由数据库自动生成的ID之外,基本上完全相同。(这是我遇到的问题,不知道如何实现这一点),或者从服务器端做一些事情(我正在使用Hibernate和Sping Boot )。

dffbzjpn

dffbzjpn1#

如果您使用的是像保存()这样的JpaRepository函数,那么只要没有抛出异常,您就可以假定该记录已添加到DB中,因此您不需要检查它是否存在,这将是浪费时间。

相关问题