我正在使用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 )。
1条答案
按热度按时间dffbzjpn1#
如果您使用的是像保存()这样的JpaRepository函数,那么只要没有抛出异常,您就可以假定该记录已添加到DB中,因此您不需要检查它是否存在,这将是浪费时间。