0
나는 소프트웨어와 직원이라는 두 개의 엔티티가 oneToMany 관계로 있으며 같은 레벨에 있습니다.JPA 주석 @OneToMany 관계 고유 레코드
@Entity(name = "EMPLOYEE")
public class Employee {
private long employeeId;
private String firstName;
private String lastName;
private List<Software> software;
@Id //signifies the primary key
@Column(name = "EMPLOYEE_ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
public long getEmployeeId() {
return employeeId;
}
public void setEmployeeId(long employeeId) {
this.employeeId = employeeId;
}
@Column(name = "FIRST_NAME", length = 50)
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Column(name = "LAST_NAME", nullable = false,length = 50)
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@OneToMany(
fetch = FetchType.EAGER,
cascade = CascadeType.ALL,
orphanRemoval = true,
targetEntity = Software.class)
@Fetch(FetchMode.SUBSELECT)
public List<Software> getSoftware() {
return software;
}
public void setSoftware(Software software) {
this.software = software;
}
}
Software.class
@Entity(name = "SOFTWARE")
public class SOFTWARE {
private long softwareId;
private String softwareName;
private String version;
private Employee emp;
@Id
@Column(name = "SOFTWARE_ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
public long getSoftwareId() {
return softwareId;
}
public void setSoftwareId(long softwareId) {
this.softwareId = softwareId;
}
@Column(name = "SOFTWARE_NAME")
public String getSoftwareName() {
return softwareName;
}
public void setSoftwareName(String name) {
this.name = name;
}
@Column(name = "SOFTWARE_VERSION")
public String getSoftwareVersion() {
return softwareDesc;
}
public void setSoftwareVersion(String version) {
this.version = version;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "EMPLOYEE_ID", nullable = true)
public String getEmployee() {
return emp;
}
public void setEmployee(Employee emp) {
this.emp = emp;
}
}
아이디어는 기록이 삭제 추가하고 각 직원에 할당 할 수있는 소프트웨어 목록과 GUI를하는 것입니다.
내 경우에는 내가 단지 employee_id입니다 다를 중복 소프트웨어 기록을해야합니다. 문제는 내가 모든 레코드에 영향을 미치지 않을 레코드를 편집하고 관계를 삭제하는 경우 삭제 된 경우이 소프트웨어를 다른 직원에게 할당 할 수 없기 때문에 레코드 자체를 삭제하지 않기를 바라는 것입니다.제 3의 테이블을 작성하여 올바른 방법입니까, 아니면 @JoinTable을 사용하여 문제를 해결할 수 있습니까? 누군가 아이디어가 있습니까?
CascadeType.ALL을 사용하지 마십시오. – Mehdi