我无法控制数据库结构。但它是这样设计的。一个人就像所有类型的人的基础。然后创建一个Teacher类,其PK也引用Person的PK。问题是当我从另一个班级引用教师时,我得到“列号错误,应为0”错误。JPA休眠 - 外键作为主键
请帮助什么是最好的方法。
@Entity
@Table(name = "APP_Person")
Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PersonID", unique = true, nullable = false)
private Long personID;
@Column(name = "Name", length = 160)
@Size(max = 160)
private String name;
}
@Entity
@Table(name = "APP_Teacher")
public class Teacher implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@ManyToOne(fetch = FetchType.LAZY)
@NotBlank
@JoinColumn(name = "PersonID", nullable = false)
Person person;
@Column(name = "Expertise", length = 160)
@Size(max = 160)
private String expertise;
}
@Entity
@Table(name = "APP_Course")
public class Course implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "CourseID", unique = true, nullable = false)
private Long courseID;
@ManyToOne(fetch = FetchType.LAZY)
@NotBlank
@JoinColumn(name = "PersonID", unique = true, nullable = false)
Teacher teacher;
}
难道你不应该将没有构成它的'Person'扩展到'Teacher'吗? – JamesENL
我可以做到这一点,但是当我向老师添加一条记录时,我希望将记录插入教师和个人表中。那可能吗?这就是我没有继承的原因 – JavaDev