0

私は2つのエンティティクラスを持っています。

@Entity

パブリッククラス従業員{

@Id
@Column(name = "employee_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;

@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "employee_skill", joinColumns = @JoinColumn(referencedColumnName = "employee_id"), inverseJoinColumns = @JoinColumn(referencedColumnName = "skill_id"))
private Collection<Skill> listSkill;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Collection<Skill> getListSkill() {
    return listSkill;
}

public void setListSkill(Skill skill) {
    if (listSkill == null) {
        listSkill = new ArrayList<Skill>();
    }
    listSkill.add(skill);
}

}

@Entity

パブリック クラス スキル {

@Id
@Column(name = "skill_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;

@ManyToOne(cascade = CascadeType.ALL)
@JoinTable(name = "employee_skill", joinColumns = @JoinColumn(referencedColumnName = "skill_id", insertable = false, updatable = false), inverseJoinColumns = @JoinColumn(referencedColumnName = "employee_id", insertable = false, updatable = false))
private Employee employee;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}   


public Employee getEmployee() {
    return employee;
}

public void setEmployee(Employee employee) {
    this.employee = employee;
}

}

両方とも UNI-Directional の場合、スキルに関連付けられた従業員オブジェクトを保存できます。

BI-Directional にしようとすると、SQL エラーが発生します。Field 'skill_id' doesn't have a default value

どこを間違えたのかわかりません。ご指摘いただけますでしょうか。

4

1 に答える 1

1

ここには双方向の OneToMany アソシエーションはありません。同じ結合テーブルにマップされた 2 つの独立した関連付けがあります。双方向の関連付けには、次の属性のおかげで、関連付けの反対側である側 (この場合は一方の側) が必要です。mappedBy

@OneToMany(cascade = CascadeType.ALL, mappedBy = "employee")
private Collection<Skill> listSkill;
于 2015-08-30T11:28:28.623 に答える