如何使用Hibernate更新实体而不是将其插入数据库



例如,我有一个Job实体和一个worker实体。当我添加新作业时,我想将工作人员分配给它,但不是将它的用户添加到再次访问数据库(并创建重复项(我只想更新工作人员(当我用工人列表创建新作业时,将作业添加到其中(

示例:

@Entity
@Table(name = "job")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Job{
@Id
@Column(name = "id")
private Long id;

@OneToMany(mappedBy = "job", fetch = FetchType.EAGER)
private Set<Worker> workers;
}

@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "workers")
public class User extends DataAudit {
@Id
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "job_id", referencedColumnName = "id")
private Job job;
}

Worker worker1 = workerService.getWorkerById(1);
Job job = new Job(1,worker1)
jobRepo.save(job)

实体应该使用与@JoinTable:的双向OneToMany关联

@Entity
@Table(name = "job")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Job{
@Id
@Column(name = "id")
private Long id;

@OneToMany(fetch=FetchType.LAZY)
@JoinTable(name="job_workers", 
joinColumns={@JoinColumn(name="job_id")},
inverseJoinColumns={@JoinColumn(name="worker_id")}
)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Set<Worker> workers;
}
////////////////////////////////////////////////////////
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "workers")
public class User extends DataAudit {
@Id
private Long id;

@ManyToOne
@JoinTable(name="job_workers", 
joinColumns={@JoinColumn(name="worker_id", insertable=false,updatable=false)},
inverseJoinColumns={@JoinColumn(name="job_id", insertable=false,updatable=false)})
private Job job;
}

最新更新