我在尝试将我们的旧版 Oracle 数据库映射到 Hibernate 时遇到了一些问题。更具体地说,我无法让正确的继承映射工作。我一直在使用的示例是人员-员工-关系。在我们的数据库中,表是分开的,所以唯一的 Mapping-Strategy 将被加入。现在的问题是 Employee 的 PK 由 EmployeeId 和 CompanyId 组成,而 PersonId 只是一个普通的 FK。如果不破坏当前运行的系统,就无法改变这一点。
这是 Person 和 Employee 的当前代码:
人物类
@Entity
@Table (name = "personas")
@Inheritance (strategy = InheritanceType.JOINED)
public class Person {
private String personId;
private boolean physical;
private String name;
private String fantasyName;
private char gender;
@Id
@Column (name = "cod_persona")
public String getPersonId() {
return personId;
}
public void setPersonId(String personId) {
this.personId = personId;
}
//rest of setters and getters
}
员工类:
@Entity
@Table (name = "rh_empleados")
@PrimaryKeyJoinColumn (name = "cod_persona")
public class Employee extends Person {
private Company company;
private String employeeId;
private Integer finalSalary;
private Branch branch;
@Basic (optional = false)
@ManyToOne
@JoinColumn (name = "cod_empresa")
public Company getCompany() {
return company;
}
public void setCompany(Company company) {
this.company = company;
}
@Basic (optional = false)
@Column (name = "cod_empleado")
public String getEmployeeId() {
return employeeId;
}
public void setEmployeeId(String employeeId) {
this.employeeId = employeeId;
}
//rest of setters and getters
}
已经有效的方法:创建或删除新员工或人员 无效的方法:选择已经存在的员工或人员,我没有遇到异常,或者某些东西没有返回任何内容。
它必须与继承有关,因为对于不在继承层次结构中的另一个实体,它可以完美地工作。
任何提示/想法/解决方法还是我搞砸了?
一切将不胜感激。
提前致谢。
编辑:显然现在创建或删除员工也不起作用,这更有意义。我收到“无法转换为内部表示”。