JPA 插入与连接表?



我正在开发一个应用程序,员工可以在其中跟踪他们的工作时间。

现在我想通过 JPA 将小时数添加到数据库中。

现在,我将要将数据存储到数据库中。

用户:

@Entity
@Table(name = "USER")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String username;
private String password;
private String fullname;
private String email;
private String creation_date;
// user roles
@ElementCollection(targetClass = Role.class, fetch = FetchType.EAGER)
@CollectionTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"))
@Enumerated(EnumType.STRING)
private Set<Role> roles;
@ManyToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
})
@JoinTable(name = "user_hour",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "hour_id")
)
private List<Hour> hours = new ArrayList<>();
public User() {
}
public User(String username, String password, String fullname, String email, String creation_date) {
this.username = username;
this.password = password;
this.fullname = fullname;
this.email = email;
this.roles = getRoles();
this.creation_date = creation_date;
}
//If user is admin
public boolean isAdmin() {
return roles.contains(Role.ADMIN);
}
//region Getters & Setters
public void setId(int id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setFullname(String fullName) {
this.fullname = fullName;
}
public void setEmail(String email) { this.email = email; }
public void setRoles(Set<Role> roles) { this.roles = roles; }
public void setCreation_date(String creation_date) { this.creation_date = creation_date; }
public int getId() { return id; }
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getFullname() {
return fullname;
}
public String getEmail() { return email; }
public Set<Role> getRoles() { return roles; }
public String getCreation_date() { return creation_date; }
//endregion
}

小时:

@Entity
@Table(name = "HOUR")
public class Hour {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String date;
private String startTime;
private String endTime;

public Hour(int id, String date, String startTime, String endTime) {
this.id = id;
this.date = date;
this.startTime = startTime;
this.endTime = endTime;
}
public Hour(){
}
@ManyToMany(mappedBy = "hours")
private List<User> users = new ArrayList<>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
}

我的 REST 控制器已获取正确的值。 我现在处于必须将其插入数据库的部分

计时服务:

@Component
public class ClockingService implements ClockRepository {
@PersistenceContext
private EntityManager entityManager;
@Override
public Boolean addStartTime(Hour hour, Integer userID) {
// Insert userID into join table user_hour
// Insert hour into table hour
return null;
}
}

检查此算法,避免自己在连接表中插入行(需要实现本机查询(

@Override
public Boolean addStartTime(Hour hour, Integer userID) {
// findUserById
// add hour to the user's hours
// update the user
}

如果您发现实施它有任何问题,请告诉我

最新更新