mysql - 一对多双向映射提示没有默认值错误

标签 mysql hibernate mapping bidirectional bidirectional-relation

我有两个实体类。

@Entity

公共(public)类员工{

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

}

当它们都是单向时,我可以保存与技能关联的员工对象。

现在,当我尝试使其成为双向时,我收到 sql 错误,指出字段“skill_id”没有默认值

我不知道我哪里做错了。请您指出。

最佳答案

这里没有双向 OneToMany 关联。您有两个独立的关联映射到同一个连接表。双向关联必须有一侧(在本例中为一侧),这是关联的反面,这要归功于 mappedBy 属性:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "employee")
private Collection<Skill> listSkill;

关于mysql - 一对多双向映射提示没有默认值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32295887/

相关文章:

mysql - Postgres 中相当于 MySql 语句 GRANT USAGE ON *.* TO ‘%’ @’%’ REQUIRE SSL

mysql - 这个子查询可以使用索引吗?

java - spring- uuid 作为主键无法更新

javascript - Highcharts 返回错误 #15

fluent-nhibernate - 映射枚举列表

php - 有哪些方法可以防止在表单中重复发布? (PHP)

mysql - 在 JMETER 中将汇总报告结果添加到数据库

java - Hibernate 和 JAXB 注释发生冲突

java - hibernate 工具 : Exception when Foreign Key is mapped to two different tables

c# - Entity Framework 自定义数据类型映射