Hibernate 带联接表的JPA插入?

Hibernate 带联接表的JPA插入?,hibernate,jpa,jointable,Hibernate,Jpa,Jointable,我正在开发一个应用程序,员工可以跟踪他们的工作时间 现在我想通过JPA将小时数添加到数据库中 现在我将把数据存储到数据库中 用户: 检查此算法,避免自己在联接表中插入行(需要实现本机查询) @覆盖 公共布尔addStartTime(小时,整数用户ID){ //Finduserbyd //将小时添加到用户的小时数 //更新用户 } 如果您在实施过程中发现任何问题,请告诉我 @Entity @Table(name = "USER") public class User implements Ser

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

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

现在我将把数据存储到数据库中

用户:


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

@覆盖
公共布尔addStartTime(小时,整数用户ID){
//Finduserbyd
//将小时添加到用户的小时数
//更新用户
}
如果您在实施过程中发现任何问题,请告诉我

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