Son*_*ony 2 java hibernate one-to-one hibernate-mapping
假设一个名为 Student 的类/实体,其中包含 id、父亲的职业和母亲的职业,实体类如下所示
学生班
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false, unique = true, updatable = false)
private int id;
@OneToOne
@JoinColumn(name = "occupationId")
Occupation fathersOccupation;
@OneToOne
@JoinColumn(name = "occupationId")
Occupation mothersOccupation;
}
Run Code Online (Sandbox Code Playgroud)
和职业类别
@Entity
@Table(name = "occupation")
public class Occupation {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "occupationId")
int occupationId;
@Column
String title;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试@OneToOne映射父亲的职业和母亲的职业时,它抛出异常Repeated column in mapping for entity。我尝试添加@Column(name="<columnName>"),但这是不允许的。我真的想要这两个字段,fathersOccupation并在学生表中进行映射mothersOccupation。oneToOne
@JoinColumn 指定实体中 FK 列的名称。
您的学生实体有 2 个针对职业的 FK,一个用于fathersOccupation,另一个用于 mothersOccupation,并且您为同一对象定义了两次映射。理想情况下,您应该有fathers_Occupation_id和Mothers_Occupation_id字段,并且您的实体中应该有相同的属性。
因此,您应该在学生表中为每个列添加相应的列名称。
@JoinColumn(name ="fathers_occupation_id")
Occupation fathersOccupation;
@JoinColumn(name="mothers_occupation_id")
Occupation mothersOccupation;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2071 次 |
| 最近记录: |