1

私の要件は、親を削除するときです。子を削除するのではなく、子を削除する代わりに、department_ID外部キーである子列の1つを何らかの値で更新する必要があります。たとえば、1つの部門(親テーブル)に多くの従業員と従業員(子)が含まれているとします。テーブル)テーブルはDepartment_ID外部キー列として持っています。問題は、親テーブルを削除したときに直面している問題です。子に何も反映されないupdatable=falseため、それをtrueにしてから親を削除すると、子列がnullに設定されるか、更新した場合親Department_Idがnullに設定され、要件に違反している子の列もnullに設定されているため、falseにします。親が変更を加えたときに子を更新したくない場合は、変更のみが削除操作に反映され、1つの列にのみ反映されます。どうすればいいですか?ありがとう

これは私の親テーブルの部門コードです

  @Id
  @Column(name = "DEPARTMENT_ID")
  private String departmentId;

  @OneToMany(fetch = FetchType.EAGER)
  @JoinColumn(name = "DEPARTMENT_ID",insertable=false,updatable=false)
  Collection<Employee> employeeList;

これは私の子供です テーブルの従業員

    @Id
    @Column(name = "EMPLOYEE_NUMBER")
    private int employeeNumber;
    @Column(name = "FIRST_NAME")
    private String firstName;
    @Column(name = "LAST_NAME")
    private String lastName;

    @Column(name = "DEPARTMENT_ID")
    private String departmentId;
4

1 に答える 1

0

子側に 1 対多の関係を維持させるため、@OneToMany にmappingBy属性を追加する必要があります。

@Id
@Column(name = "DEPARTMENT_ID")
private String departmentId;

@OneToMany(fetch = FetchType.EAGER, mappedBy="departmentId")
@JoinColumn(name = "DEPARTMENT_ID",insertable=false,updatable=false)
Collection<Employee> employeeList;

以下の関係を維持します。

employee.departmentId = newDepartmentId; //or set it null to detach from the old dept
于 2013-03-05T10:18:33.627 に答える